做ppt找素材的網(wǎng)站網(wǎng)絡(luò)營(yíng)銷包括幾個(gè)部分
這道題目求第三大數(shù),如果第三大數(shù)不存在則返回最大數(shù),且該數(shù)字最大值不超過(guò)2^31-1。從這個(gè)提示上就可以看出這個(gè)數(shù)字是用int類型表示的。我們當(dāng)然可以通過(guò)排序的方式先給數(shù)組排序然后很容易的就能求解。但是有沒有什么更好的辦法呢?對(duì)于數(shù)組來(lái)說(shuō)考點(diǎn)無(wú)非就是遍歷,我們遍歷數(shù)組,分別記錄最大值,第二大值,第三大值,每遍歷一個(gè)數(shù)字更新這三個(gè)值,這里這三個(gè)值的初始化比較講究,我們應(yīng)該是要初始化成最小值才可以,比 int還要小那只能考慮long類型了
public class thirdMaximumNumber {public static void main(String[] args) {int[] arr = {2,2,3,1};System.out.println(getThird(arr));}public static int getThird(int[] nums) {Long first = Long.MIN_VALUE;Long second = Long.MIN_VALUE;Long third = Long.MIN_VALUE;for(int i = 0;i<nums.length;i++) {if(nums[i] > first) {third = second;second = first;first = (long) nums[i];} else if(nums[i] < first && nums[i] > second) {//這里之所以nums[i] < first的目的是為了解決掉nums[i] = first的這種情況,因?yàn)轭}目中說(shuō)了這種重復(fù)的元素不算third = second;second = (long) nums[i];} else if(nums[i] < second && nums[i] > third) {third = (long) nums[i];}}long res = third == Long.MIN_VALUE ? first : third;return (int) res;}
}