這道題目起初作的很惱火哦。
記錄一下。數組
問題:給定一個int數組,返回數組中第三大的數。若是存在,返回第三大值,若是不存在,返回最大值。
原題目:Leetcode 414
思路:查找三次,找到最大值時,將最大值賦值給次大值,將次大值賦值給第三大值。code
int thirdMax(int* nums, int numsSize){ long max1 = LONG_MIN; long max2 = LONG_MIN; long max3 = LONG_MIN; for (int i = 0; i < numsSize; i++) { if (max1 < nums[i]) { max3 = max2; max2 = max1; max1 = nums[i];//max } if (max2 < nums[i] && nums[i] < max1) { max3 = max2; max2 = nums[i]; } if (max3 < nums[i] && nums[i] < max2) { max3 = nums[i]; } } if (max3 == LONG_MIN) return max1; return max3; }
初始值設爲了LONG_MIN,由於若是第三大值是INT_MIN時,會致使最後的判斷失效。leetcode