当前位置: 首页 > news >正文

nowcoder NC236题 最大差值

目录

题目描述:

示例1

示例2

题干解析:

 暴力求解:

代码展示: 

优化:

代码展示: 


 

题目跳转icon-default.png?t=N7T8https://www.nowcoder.com/practice/a01abbdc52ba4d5f8777fb5dae91b204?tpId=128&tqId=33768&ru=/exam/oj

 

题目描述:

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

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

数据范围: 2 < n \leq 2 * 10^{5} ,数组中的值满足 0\leq \left | val \right | \leq 5 * 10^{8}

示例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;}

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

优化:

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

据图可知我们需要返回的是 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),所以只要思路正确就一定会通过。 

http://www.lryc.cn/news/146518.html

相关文章:

  • TCP/IP五层模型、封装和分用
  • LeetCode 面试题 01.08. 零矩阵
  • Qt应用开发(基础篇)——进度条 QProgressBar
  • 108页石油石化5G智慧炼化厂整体方案PPT
  • Codeforces 1625E2 括号树 + BIT
  • PHP命令行CLI的使用
  • 近期嵌软线下笔试题记录
  • 基于MYSQL的主从同步和读写分离
  • java八股文面试[多线程]——合适的线程数是多少
  • Linux系统下vim常用命令
  • 【2023】LeetCode HOT 100——链表
  • 智能井盖传感器,物联网智能井盖系统
  • C语言三子棋解析
  • 【Jenkins打包服务,Dockerfile报错:manifest for java : 8 not fourd】
  • 读SQL学习指南(第3版)笔记06_连接和集合
  • C#学习,结构,面向对象,类
  • 【PHP】文件操作
  • 科创板50ETF期权交易:详细规则、费用、保证金和开户攻略
  • 怎么把图片放大并且清晰?有详细的方法步骤
  • C++ 构造函数、析构函数调用虚函数
  • 工业状态监测如何选择合适的无线技术?
  • Mysql45讲学习笔记
  • Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
  • opencv 水果识别+UI界面识别系统,可训练自定义的水果数据集
  • TypeScript数组和对象的操作
  • docker之Compose与DockerSwarm
  • VS Code 使用 clang++ 编译,使用 cppvsdbg 或 lldb 调试的配置方法
  • android11,12 Launcher3编译什么
  • Go 第三方库引起的线上问题、如何在线线上环境进行调试定位问题以及golang开发中各种问题精华整理总结
  • 【C语言】#define 宏定义初步使用