源自《改善java程序的151建议》
1.求一个数组中的最大值
(1)自行实现,快速查找最大值
public static int max(int[] data){
int max=data[0];
for(int i:data){
max=max>i?max:i;
}
return max;
}
(2)先排序,后取值
public static int max(int[] data){
Arrays.sort(data.clone());
return data[data.length-1];
}
第二种方法中为何要先data.clone()再排序?因为数组也是对象,如果不拷贝那就把原来的数组的顺序改不了。
方法一可以提升性能,而先排序后取值简单通俗易懂。从效率上讲,方法一快些。但实际测试中发现如果数组中数据少于一万,二者基本没啥差别
2.求一个数组中的第二大值
因为数组中的值是可以重复的,所以最大值可能有多个,故不能取倒数第二个值。需用一个特殊的算法先剔除重复的值,再进行排序
public static int secondMax(Integer[] data){
List<Integer> dataList=Arrays.asList(data);
//用treeset删除重复并排序
TreeSet<Integer> ts=new TreeSet<Integer>(dataList);
//取到比最大值小的,即第二大的值
return ts.lower(ts.last());
}
分享到:
相关推荐
python中获取numpy数组每列最大值的索引,输出其行坐标。
插入排序 01,九九乘法表.c ...06.一维数组的最值.c 07.一维数组的逆置,c 08.冒泡法排序.c 09.选择排序.c 10.1.插入排序-直接插入排序.c 10.2.插入排序-希尔排序.c 11.快速排序.c 12.归并排序.c 13.堆排序.c
用于比较指针数组和数组指针实现算法的差异,利用函数返回指针实现。 可作为研究C语言指针使用的范例程序。 有源代码和实现结果图。
RMQ(Range Minimum/Maximum Query),即区间最大/小值查询,查询的时间复杂度为O(1)
资源名:蝙蝠算法案例_蝙蝠算法是一种智能优化算法_可用于最小值问题_matlab 资源类型:matlab项目全套源码 源码说明: 全部项目源码都是经过测试校正后百分百成功运行的,如果您下载后不能运行可联系我进行指导或者...
19信息养护与知识产权保护.mp4 20C语言的两种开发环境.mp4 21C语言的基础知识.mp4 ...33常用算法的应用-求最值.mp4 34常用算法的应用-判断素数.mp4 35常用算法的应用-数组元素的.mp4 36C语言习题.mp4
树状数组算法分析树状数组可以解决数量级较大的区间求和问题,区间求最值问题,区间修改、查询问题以及求逆序对等应用。树状数组的时间复杂度O(log2n),正常情况下远远快于线性时间O(n)。
选择法也算是入门的一种排序算法,比起冒泡法,它的方法巧妙了一些,它的出发点在于“挑”,每次挑选数组的最值,与前置元素换位,然后继续挑选剩余元素的最值并重复操作。个人认为选择排序的意义不在于排序本身,而...
数组是大学里经常拿来做算法练习的对象。一些经典算法非常有价值,考试、装逼、面试都十分有用。但现在是效率时代,编程讲究生产效率,利用LINQ,可以让程序猿避免写一些基本算法,把精力花在业务处理上
powell方法是计算最值的有效方法,一般情况下是无约束的,目前Powell已发展了一种称为BOBYQA的带区间约束算法。 压缩文件里面optimization.h是无约束powell寻优的一个类,以前在baidu上找到的。powell.h和powell.cpp...
个数字的最值,i ii是开始位置,j jj是延伸长度,d p [ i ] [ 0 ] dp[i][0]dp[i][0]则是原数组a [ i ] a[i]a[i]本身,是边界。原理类似倍增,首先比较每2个元素的最值,然后再通过比较这2个最值,得到4个元素的最值...
楼天城 -《匹配算法在搜索问题中的应用》 贝小辉 -《浅析树的划分问题》 林 涛 -《线段树的应用》 杨思雨 -《伸展树的基本操作与应用》 许智磊 -《后缀数组》 朱泽园 -《多串匹配算法及其启示》 韩文弢 -《论...
RMQ 区间最值询问3 KMP 模式匹配3 字符串最小表示4 第二章数据结构5 并查集5 HEAP 最小堆5 树状数组6 二维树状数组6 TRIE 字典树6 后缀数组8 LCP 最长公共前缀9 第三章图论11 BELLMAN FORD 11 BELLMAN FORD(队列...
首先,我们需要读取输入的正整数,然后计算它的位数,并将每一位数字存储在数组中。最后,我们输出位数、每一位数字和逆序的各位数字。 小鑫数数儿问题 在该问题中,我们需要编写一个程序,输入多组数字,输出小于...
求最值(选择1,选择2...) 回溯问题,实际上就是一个决策树的遍历过程,不合适就退回上一步,通过约束条件, 减少时间复杂度。 回溯算法(DFS)的框架: result = [] def backtrack(路径, 选择列表): if 满足结束条件:...
算法: 从 S 中任意取出三个元素// 如果 S 数组的形式给出 不妨取出前三个// 由于 S 是集合,所以这个三个元素必然互异确定并且排除其中的最最值输出 z
实例103 查找数组中的最值 134 实例104 判断一个数是否存在数组中 135 实例105 求二维数组对角线之和 136 实例106 模拟比赛打分 137 实例107 矩阵的转置 139 实例108 设计魔方阵 141 实例109 字符升序排列 142 实例...
(稳定是指如果数组里两个相等的数,排序前后这两个相等的数的相对位置保持不变) 同时要熟练掌握代码,将代码精炼,能在短时间内复现出无bug的代码。 选择排序 最简单直观的排序方法,每一趟都选择最小(最大)的...
数组去重,扁平化和最值 数组乱序 懒加载 无限滚动 RegExp 正则表达式 RegExp 构造函数属性 应用 浏览器工作原理 浏览器的多进程和JS单线程 浏览器的渲染过程 Event Loop 栈空间和堆空间 垃圾回收 性能优化 性能优化...