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.hqwc.cn/news/89939.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

table,设置 数据相同时, 合并列

<el-table :data"tableData" :span-method"objectSpanMethod" border style"width: 100%" show-summary><el-table-column type"index" label"序号" width"100" /><el-table-column prop"dat…

系统架构设计高级技能 · 云原生架构设计理论与实践

系列文章目录 系统架构设计高级技能 软件架构概念、架构风格、ABSD、架构复用、DSSA&#xff08;一&#xff09;【系统架构设计师】 系统架构设计高级技能 系统质量属性与架构评估&#xff08;二&#xff09;【系统架构设计师】 系统架构设计高级技能 软件可靠性分析与设计…

前端面试基础面试题——1

总结了一些基础的面试题 如果大家有兴趣的话可以关注留意一下 今后会不断更新一些面试题 1.JavaScript 中的 AJAX 原理及应用。 2.什么是闭包?请简单描述一下闭包的特点与应用场景。 3.请简述 HTTPS 与 HTTP 的区别&#xff0c;如何保证 HTTPS 的安全性? 4.请简述…

【软考】系统集成项目管理工程师(三)信息系统集成专业技术知识①【16分】

一、系统集成的特点 官方解释&#xff1a; 1、信息系统建设的内容主要包括设备采购、系统集成、软件开发和运维服务等&#xff1b; 2、信息系统集成是指将计算机软件、硬件、网络通信、信息安全等技术和产品集成为能够满足用户特定需求的信息系统&#xff1b;显著特点如下&am…

算法通关村第9关【白银】| 二分查找与搜索树高频问题

基于二分查找的拓展问题 1.山脉数组的峰顶索引 思路&#xff1a;二分查找 山峰有三种状态&#xff1a;需要注意数组边界 1.顶峰&#xff1a;arr[mid]>arr[mid1]&&arr[mid]>arr[mid-1] 2.上坡&#xff1a;arr[mid]<arr[mid1] 3.下坡&#xff1a;arr[mid]…

常见的移动端布局

流式布局&#xff08;百分比布局&#xff09; 使用百分比、相对单位&#xff08;如 em、rem&#xff09;等来设置元素的宽度&#xff0c;使页面元素根据视口大小的变化进行调整。这种方法可以实现基本的自适应效果&#xff0c;但可能在不同设备上显示不一致。 <!DOCTYPE ht…

java项目mysql转postgresql

特殊函数 &#xff1a; mysql&#xff1a; find_in_set(?, ancestors) postgresql&#xff1a; ? ANY (string_to_array(ancestors,,)) mysql&#xff1a; date_format(t1.oper_time, %Y-%m-%d) postgresql&#xff1a; rksj::date to_char(inDate,YYYY-MM-DD) mysql&am…

Haproxy+Keepalive 整合rabbitmq实现高可用负载均衡

Haproxy 实现负载均衡 HAProxy 提供高可用性、负载均衡及基于 TCPHTTP 应用的代理&#xff0c;支持虚拟主机&#xff0c;它是免费、快速并且可靠的一种解决方案&#xff0c;包括 Twitter,Reddit,StackOverflow,GitHub 在内的多家知名互联网公司在使用。HAProxy 实现了一种…

数组 刷题常用

在写数组模拟常用到数组&#xff0c;借此把常用的记下来以便查阅 一维数组&#xff0c;若初始化为0&#xff0c;可以用int a[N] {0}或者int a[N]{}. 但是若是其他值&#xff0c;不可类似地初始化为int a[N] {0}&#xff0c;而应写成memset或者fill赋值的方法。 首先便是二维…

大数据-玩转数据-Flink窗口函数

一、Flink窗口函数 前面指定了窗口的分配器, 接着我们需要来指定如何计算, 这事由window function来负责. 一旦窗口关闭, window function 去计算处理窗口中的每个元素. window function 可以是ReduceFunction,AggregateFunction,or ProcessWindowFunction中的任意一种. Reduc…

关于使用远程工具连接mysql数据库时,提示:Public Key Retrieval is not allowed

我在使用DBeaver工具连接 数据库时&#xff0c;提示&#xff1a;Public Key Retrieval is not allowed&#xff0c; 我在前一天还是可以连接的&#xff0c;但是今天突然无法连接了&#xff0c; 但是最后捣鼓了一下又可以了。 具体方法&#xff1a;首先先把mysql服务停了&#x…