nowcoder NC236题 最大差值

这篇具有很好参考价值的文章主要介绍了nowcoder NC236题 最大差值。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

题目描述:

示例1

示例2

题干解析:

 暴力求解:

代码展示: 

优化:

代码展示: 


 

题目跳转https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204?tpId=128&tqId=33768&ru=/exam/oj

 

题目描述:

有一个长为 n 的数组 A ,求满足 0 ≤ a ≤ b < n 的 A[b] - A[a] 的最大值。

给定数组 A 及它的大小 n ,请返回最大差值。

数据范围:  ,数组中的值满足 

示例1

输入:[5,1],2

复制返回值:0

示例2

输入:[5,6],2

复制返回值:1

题干解析:

从题目中我们可以得出以下几点结论

  1. 从给定的 数组A 中求出最大差值
  2. 数组的顺序不能改变;
  3. 结果必须大于等于0
  4. 必须是后面的数前面的数

 暴力求解:

读完题目后我们可以很容易的写出暴力解法:

利用两个for()循环把每一个数都试一遍然后返回其中的最大值

代码展示: 

    public int getDis (int[] A, int n) {

        int max = 0;
        for (int i = 0; i < n; i++){
            for (int j = i+1; j < n; j++){
                if (A[j] - A[i] > max){
                    max = A[j] - A[i];
                }
            }
        }
 
        return max;
    }

但是当我们写完之后我们自己也一定会觉得这段代码的时间复杂度太大了可能会挂,运行之后也确实挂了。

nowcoder NC236题 最大差值,java,开发语言,动态规划,算法,贪心算法

优化:

根据题目描述我们可以先简单的画一张折线图每一个点都是一个数据:

nowcoder NC236题 最大差值,java,开发语言,动态规划,算法,贪心算法

nowcoder NC236题 最大差值,java,开发语言,动态规划,算法,贪心算法

据图可知我们需要返回的是 b1,b2,b3,b4,b5,b6 中的最大值

此时我们我们就可以:

  1. 定义一个 max 变量用来存储已遍历过的数最大差值;
  2. 定义一个变量 a 用来存储已遍历过的数中的最小值;
  3. 用一个 for()循环 来对 数组A 进行遍历,然后不断更新 max 和 a 的值。

代码展示: 

    public int getDis (int[] A, int n) {

        int max = 0;
        int a = 0;

        for (int i = 1; i < n; i++){
            if (A[i] - A[a] > max){
                max = A[i] - A[a];
            }
            if (A[i] < A[a]){
                a = i;
            }
        }

        return max;
    }

此时代码的时间复杂度被压缩到了O(n),所以只要思路正确就一定会通过。 

nowcoder NC236题 最大差值,java,开发语言,动态规划,算法,贪心算法文章来源地址https://www.toymoban.com/news/detail-684761.html

到了这里,关于nowcoder NC236题 最大差值的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 动态规划 剑指 Offer 47. 礼物的最大价值

     代码展示:         进行动态规划的五个步骤:         1.状态表示                 dp[i][j]表示从起点到[i][j]这个位置上能获得礼物的最大价值         2.状态转移方程                 我们分析距离[i][j]最近的位置,根据题意我们到达[i][j]位置只能从[i-1][j]向下移动或

    2024年02月13日
    浏览(41)
  • 【七】【C语言\动态规划】最大子数组和、环形子数组的最大和、乘积最大子数组,三道题目深度解析

    动态规划就像是解决问题的一种策略,它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题,并将每个小问题的解保存起来。这样,当我们需要解决原始问题的时候,我们就可以直接利用已经计算好的小问题的解,而不需要重

    2024年02月03日
    浏览(46)
  • 【动态规划】NK刷题记之DP6 连续子数组最大和(C语言实现)

    ❤️博客主页:小镇敲码人 🍏 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌞 勤奋努力是一个长期的过程,如果追求速成,就是异想天开。你越努力、越认真生活,生活就会变得越美丽。如果一直保持奋斗,你的人生将会发生翻天覆地的变化。 🍉 如果你也迷失在了路上,对人

    2024年02月08日
    浏览(48)
  • 最大子段和——用蛮力算法,分治策略,动态规划算法三种求法(C语言)

    目录 一、题目 二、算法求解 1、蛮力算法 伪代码  算法分析 程序 2、分治策略 伪代码 算法分析 程序 3、动态规划算法 伪代码 算法分析 程序 设A=a1,a2,...,an是n个整数的序列,称ai,....,aj为该序列的连续子序列,其中1=i=j=n,子序列的元素之和称为A的子段和: 例如,A=-2,11,-4,1

    2024年01月24日
    浏览(55)
  • 【华为OD统一考试B卷 | 100分】分割数组的最大差值(C++ Java JavaScript Python)

    在线OJ 已购买本专栏用户,请私信博主开通账号,在线刷题!!! 运行出现 Runtime Error 0Aborted,请忽略 华为OD统一考试A卷+B卷 新题库说明 2023年5月份,华为官方已经将的 2022/0223Q(1/2/3/4)统一修改为OD统一考试(A卷)和OD统一考试(B卷)。 你收到的链接上面会标注A卷还是B卷。

    2024年02月16日
    浏览(94)
  • 乘积最大子数组--动态规划

    乘积最大子数组 思路: 看到这个题的时候 要用DP的想法去做这道题 想到遍历到前面的值能不能为后面所用 假设有n个值 我们可以记录一下 第i个值的最大值是什么 怎么用到前面的值取判断 第i个值 可能正数 也可能是负数 如果是正数 那么我们乘以后面第i-1位的最大值 可以得

    2024年02月11日
    浏览(43)
  • 动态规划 | 乘积最大

    原题链接 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰 90 周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友 XZ 也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一

    2024年02月03日
    浏览(47)
  • 最大子数组和:动态规划

    Problem: 53. 最大子数组和 首先就是赋予dp[0]为nums[0],然后循环遍历数组判断dp[i-1]是否小于0,如果小于0那么dp[i]就是nums[i],负责dp[i]就是dp[i-1]+nums[i],这样就可以保证每个dp[i]都是目前序列的最大值,最后返回最大的dp[i]就好 描述你的解题方法 时间复杂度: 添加时间复杂度, 示例:

    2024年02月05日
    浏览(44)
  • 动态规划——最大子数组和

    最大子数组和 Time Limit:  1000 MS Memory Limit:  5000 KB Description Input Output Sample Input Sample Output 显然该题应使用动态规划的方法求解。 可以使用动态规划来求解最大子数组和。假设dp[i]表示以第i个元素结尾的最大子数组和,那么可以得到以下状态转移方程: dp[i] = max(dp[i-1]+a[i], a[

    2024年02月02日
    浏览(42)
  • 3.4动态规划--最大字段和

    要好好学习这个难受难受超级难受的动态规划了,千万不要再沉迷在看剧和玩耍里面了。必须承认最近没有好好学习。 最大字段和书上介绍了三种解法:暴力、递归分治、动态规划 递归分治,一分为二,合并的时候有三种情况,注意考虑清楚 动态规划,最优解的数组b[j]表示

    2024年02月02日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包