q:給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o(n)。
示例 1:
輸入: [3, 2, 1]
輸出: 1
解釋: 第三大的數是 1.
示例 2:
輸入: [1, 2]
輸出: 2
解釋: 第三大的數不存在, 所以返回最大的數 2 .
示例 3:
輸入: [2, 2, 3, 1]
輸出: 1
解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。
存在兩個值為2的數,它們都排第二。
a:1.用set最方便,直接treeset排序好。
public int thirdmax(int nums)
int count = 3;
int res = nums[0];
iteratorit = set.iterator();
if (set.size() < 3)
return it.next();
while (count-- != 0)
return res;
}
2.設定三個max
public int thirdmax(int nums) else if (nums[i] > max2 && nums[i] != max1) else if (nums[i] > max3 && nums[i] != max2 && nums[i] != max1)
}if (max3 == long.min_value)
return (int)max3;
}
leetcode 第三大的數
這道題我沒有去追求特別高深的解法了。給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸...
leetcode 第三大的數
題目描述 未完成原因 特例很多,情況考慮不周全 如果有相同的數字出現,不能妥善處理 正解 int thirdmax int nums,int numssize else cnt if cnt 2 nums i a nums i b else if nums i b else cnt if cnt 3...
第三大的數
第三大的數 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1...