LeetCode15 三數之和

2021-10-16 12:21:35 字數 946 閱讀 8506

給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有和為 0 且不重複的三元組。

注意:答案中不可以包含重複的三元組。

示例 1:

輸入:nums = [-1,0,1,2,-1,-4]

輸出:[[-1,-1,2],[-1,0,1]]

示例 2:

輸入:nums =

輸出:示例 3:

輸入:nums = [0]

輸出:先對整個陣列進行排序,陣列為從小到大進行排序,然後遍歷整個排序後的陣列,當遍歷值大於0的時候直接退出迴圈,因為往後的值都大於它,後面的兩個值和一定大於0;當遍歷的下標大於0,並且相鄰的兩個數字相等,跳出本次迴圈繼續下一次,然後 初始化兩個下標 r=i+1,l=leng-1;分別代表當前值後面的第一位和最後一位,然後進行三個數字相加 如果為0,則三個數字對應的下標記錄下來,然後進行移動r,或者一定l,當三個數字之和大於0,則向左移動l,當三個數字之和小於0,則向右移動r;

class solution 

int length =nums.length;

//進行排序

arrays.sort(nums);

for(int i=0;i0)

//去重

if(i>0 && nums[i]==nums[i-1]);

//下標i對應的右邊陣列的開始位置

int l=i+1;

//下標i對應的右邊陣列的結束位置

int r=length-1;

while(l0)

//l下標右移

LeetCode 15 三數之和

15.給定乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組 方法一,個人解法正確,但是效率太低,時間複雜度o n 3 時間超時,無法提交至leetcode public s...

leetcode 15 三數之和

給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 class solutio...

leetcode15 三數之和

給定乙個包含 n 個整數的陣列nums,判斷nums中是否存在三個元素 a,b,c 使得 a b c 0 找出所有滿足條件且不重複的三元組。注意 答案中不可以包含重複的三元組。例如,給定陣列 nums 1,0,1,2,1,4 滿足要求的三元組集合為 1,0,1 1,1,2 先找兩數之和,然後再用un...