給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
例如, 給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[[-1, 0, 1],
[-1, -1, 2]
]方法一:先對陣列進行排序,然後用三個迴圈語句找到和為0的三個數,執行效率較低並且輸出超時。
class program);}
}}return result;
}static void main(string args)
;console.writeline(threesum(nums));}}
方法二:先對陣列排序,然後固定第乙個數的索引,在乙個迴圈語句裡面利用雙指標找和為0的數,當和小於0時,雙指標交替向中間移動。
class program
);if(nums[l] == nums[l + 1]) l++;
if(nums[r - 1] == nums[r]) r--;
l++; r--;
}else if (nums[i] + nums[l] + nums[r] > 0)
r--;}}
return result;
}static void main(string args)
;console.writeline(threesum(nums));}}
測試用例:
執行結果:
LeetCode 9 題解 回文數
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10輸出 false 解釋 從右向左讀,...
Go實現回文數(leetcode 9)
判斷乙個整數是否是回文數。回文數是指正序 從左向右 和倒序 從右向左 讀都是一樣的整數。示例 1 輸入 121 輸出 true 示例 2 輸入 121 輸出 false 解釋 從左向右讀,為 121 從右向左讀,為 121 因此它不是乙個回文數。示例 3 輸入 10 輸出 false 解釋 從右向左...
LeetCode 9 回文數(簡單)
點此去做 題幹 判斷乙個整數是否是回文數。回文數是指正序和倒序都是一樣的整數。你能不將數字轉化為字串做嗎?輸入 121 121 10輸出 true false false執行用時 28ms,11.5mb 思想 最開始想要借用整數翻轉的 先將整數翻轉後再做相等比較,結果發現用例中有會造成溢位的大數,不...