中級演算法之陣列和字串 三數之和

2021-10-02 11:42:00 字數 630 閱讀 2773

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

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

示例:

給定陣列 nums = [-1, 0, 1, 2, -1, -4],

滿足要求的三元組集合為: [ [-1, 0, 1], [-1, -1, 2] ]

思路:首先進行排序,然後順序篩選i,作為基數,再在i的後面的數中利用二分查詢找到能讓三者之和等於0的另外兩個數。

關鍵點:為了避免重複,我這裡採用了重複的i不再參與+set儲存來解決的。

vector> threesum(vector& nums) 

if (nums[i] + nums[front] + nums[tail] < 0) front++;

if (nums[i] + nums[front] + nums[tail] > 0) tail--;

} pre = nums[i];

} res.assign(tres.begin(), tres.end());

return res;

}

中級演算法 1 三數之和

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

中級演算法之陣列和字串 矩陣置零

給定乙個 m x n 的矩陣,如果乙個元素為 0,則將其所在行和列的所有元素都設為 0。請使用原地演算法。示例 1 輸入 1,1,1 1,0,1 1,1,1 輸出 1,0,1 0,0,0 1,0,1 示例 2 輸入 0,1,2,0 3,4,5,2 1,3,1,5 輸出 0,0,0,0 0,4,5,0...

中級演算法之陣列和字串 無重複字元的最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...