Leetcode 611. 有效三角形的個數 (排序後雙指標優化)
排序,直接列舉時間複雜度O(n^3)
雙指標優化:排序後,首先列舉最大的邊,列舉最大的邊之後,在列舉第二大的邊,在列舉第二大的邊的時候,最小的邊只會不斷向右移動,不會後退,因此可以去掉一重迴圈。程式碼如下:
class Solution {
public:
int triangleNumber(vector<int>& nums) {
sort(nums.begin(),nums.end());
int n = nums.size();
int k = 0, res = 0;
for(int i=2;i<n;i++){
for(int j=i-1,k=0;j>k;j--){
while(k<j&&nums[k]+nums[j]<=nums[i]) k++;
res += j-k; // k k+1, k+2, j-1 // j-k-1+1
}
}
return res;
}
};
相關文章
- 指標-n個數的排序指標排序
- leetcode--三數之和(python實現雙指標法)LeetCodePython指標
- LeetCode合併兩個有序陣列(逆向雙指標)LeetCode陣列指標
- 「LeetCode Top100」之雙指標LeetCode指標
- 有效資源跟蹤的8個指標指標
- LeetCode解題記錄(雙指標專題)LeetCode指標
- leetcode:有效的數獨LeetCode
- 0x03 Leetcode Hot100 雙指標LeetCode指標
- LeetCode -844. 比較含退格的字串(棧、雙指標)LeetCode字串指標
- 雙指標妙解三數之和指標
- 雙指標指標
- Elasticsearch 按照標籤匹配個數優先排序查詢Elasticsearch排序
- LeetCode 36——有效的數獨LeetCode
- 力扣之迴文數(雙指標中的對撞指標公式模板)力扣指標公式
- 圖解兩數之和:雙指標法圖解指標
- 雙指標法指標
- 【LeetCode_344】反轉字串_Python&Java_雙指標解法LeetCode字串PythonJava指標
- LeetCode 367[有效的完全平方數]LeetCode
- <二分查詢+雙指標+字首和>解決子陣列和排序後的區間和指標陣列排序
- LeetCode-兩個排序陣列的中位數LeetCode排序陣列
- 雙指標法相關的題指標
- 【leetcode】19. 刪除連結串列的倒數第N個節點(remove-nth-node-from-end-of-list)(雙指標)[中等]LeetCodeREM指標
- LeetCode-367-有效的完全平方數LeetCode
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- 程式分析與優化 - 5 指標分析優化指標
- LeetCode 4. 兩個排序陣列的中位數LeetCode排序陣列
- LeetCode-4. 兩個排序陣列的中位數LeetCode排序陣列
- 雙指標演算法的一個簡單題解指標演算法
- leetcode 題解:python3@ 官方題解_暴力法_雙指標法LeetCodePython指標
- 演算法-雙指標演算法指標
- leetcode 11 題解:python3@ 官方題解_暴力法_雙指標法LeetCodePython指標
- 雙指標維護筆記指標筆記
- 雙指標習題:Kalindrome Array指標
- 6.12.雙指標專題指標
- Orderby 排序優化排序優化
- LeetCode-116-填充每個節點的下一個右側節點指標LeetCode指標
- 指標變數指標變數
- 智慧指標引用計數變化學習指標