首页 > 代码库 > 求数组中第三大的数字,如果不存在则返回最大的数字
求数组中第三大的数字,如果不存在则返回最大的数字
要求:算法时间复杂度为O(n)。
代码:
public int getThirdMaxElement(int[] array) { if(array == null) { return 0; } if(array.length == 1) { return array[0]; } if(array.length == 2) { return array[0] > array[1] ? array[0] : array[1]; } int[] thirdArr = {0,0,0}; //数组存储最大的三个数 int a = 0; //thirdArr数组下标 int b = 1; //array数组下标 thirdArr[0] = array[0]; //填充thirdArr数组 while(a < 2 && b < array.length) { if(thirdArr[a] != array[b]) { thirdArr[a+1] = array[b]; a++; } b++; } if(a < 2) { //如果thirdArr只有两个元素 return thirdArr[0] > thirdArr[1] ? thirdArr[0] : thirdArr[1]; } else { //对thirdArr数组排序 Arrays.sort(thirdArr); //升序 } //对剩余数组进行比较 while(b < array.length) { if(thirdArr[2] < array[b]) { //1.最大的数比较 thirdArr[0] = thirdArr[1]; thirdArr[1] = thirdArr[2]; thirdArr[2] = array[b]; b++; continue; } if(thirdArr[1] < array[b]) { //2.中间数比较 thirdArr[0] = thirdArr[1]; thirdArr[1] = array[b]; b++; continue; } if(thirdArr[0] < array[b]) { //3.最小的数比较 thirdArr[0] = array[b]; b++; continue; } b++; } return thirdArr[0]; }
求数组中第三大的数字,如果不存在则返回最大的数字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。