題目:
給你乙個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?請你找出所有滿足條件且不重複的三元組。
注意:答案中不可以包含重複的三元組。
示例:給定陣列 nums = [-1, 0, 1, 2, -1, -4],
滿足要求的三元組集合為:
[[-1, 0, 1],
[-1, -1, 2]
]首先對陣列進行排序(一定要進行排序,後面的內容都是在排序陣列的前提下),排序後固定乙個數 nums[i],再使用左右指標指向 nums[i]後面的兩端,數字分別為 nums[l] 和 nums[r],計算三個數的和 sum 判斷是否滿足為 0,滿足則新增進結果集。
難點:需要去重的情況:
首先當nums[i]==nums[i-1]時,需要進行去重,因為之前nums[i-1]的所有情況已經全部加到結果集裡了,因為nums[i]==nums[i-1],如果再算一次的話會發生重複。
當num[l]==nums[l+1] 和 nums[r]==nums[r-1]時,也會發生重複。
特判:
當陣列為空時,或者陣列的長度小於3時,直接返回空集合。
當對陣列進行遍歷時,由於之前已經對陣列進行了排序操作,當nums[i]>0時,終止迴圈,因為後續的數都比nums[i]大,相加不會為0。
**
public list> threesum(int nums)
arrays.sort(nums);
for(int i=0;i0)
if(i>0 && nums[i]==nums[i-1])
int l = i+1;
int r=len-1;
while(lwhile(ll++;
r--;
}else if(sum<0)else}}
return res;
}
Android Studio錯題記錄
unexpected top level exception com.android.dex.dexexception multiple dex files define l buildconfig 兩個androidmanifest.xml的包名重複了 另外,multiple dex files ...
錯題記錄(一)
1 資料庫 1 在關係模型中,每乙個二維表稱為乙個關係 2 2 作業系統 1 位向量 bit vector 的用處為磁碟空閒空間的管理 3 計算機網路 1 關於ip多播位址的描述 實現ip多播的分組使用的是ip多播位址 ip多播位址只能夠用於目的位址,而不能夠用於源位址 標準分類的d類位址是為ip多...
crm錯題記錄
一 el form rules問題 elemnrtui配合著vue是常見的後台管理系統的標配,但是element中的說明有些過於簡單 需要自己去嘗試 才能知道怎麼用,今天就記錄一下 我所遇到的表單驗證的坑。做個分享記錄,方便有同樣問題的人,也是對自己學習的積累。form 元件提供了表單驗證的功能,只...