題目描述:
未完成原因:特例很多,情況考慮不周全
如果有相同的數字出現,不能妥善處理
正解
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)
return a;
while
(ielse
if(nums[i]
>b)
else
if(nums[i]
>c)
i++;}
return c;
}
對前三個數字單獨特殊處理,只有不一樣的時候才會對cnt++,如果最後cnt<3,證明陣列裡的不同的數字只有三個。
用python寫更簡潔:
set和list可以直接強制轉換
不需要逐元素新增到列表裡
set多用於刪除重複元素,求交集和並集,但是set無序,可用列表排序,也可直接sorted(set).
省去轉換為list的時間直接用set排序。
leetcode 第三大的數
這道題我沒有去追求特別高深的解法了。給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸...
LeetCode 第三大的數
q 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解...
第三大的數
第三大的數 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1...