找出不是兩個陣列共有的元素 陣列 N數之和問題

2021-10-11 00:12:08 字數 2099 閱讀 2721

給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。 你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。

示例: 給定 nums = [2, 7, 11, 15], target = 9

因為 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

利用雜湊表,在迭代中判斷是否存在target-nums[i]這一元素,然後將tmp和其索引存入雜湊表中

在python中可以用字典表示雜湊表

class
注意:此題不適合使用雙指標,因為需要先對陣列進行排序,而排序後,陣列的下標會被打亂,結果要求返回的數字的下標

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

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

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

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

將陣列排序

定義指標i,left,right。遍歷i,將問題轉化為在i之後的陣列中尋找nums[i]+nums[left]+nums[right]=0的問題(即三數之和可以使用雙指標解決)

剪枝,去重

# 雙指標,所以先固定乙個數字,用雙指標來找到另外兩個數字。注意記得剪枝

給定乙個包括 n 個整數的陣列 nums 和 乙個目標值 target。找出 nums 中的三個整數,使得它們的和與 target 最接近。返回這三個數的和。假定每組輸入只存在唯一答案。

例如,給定陣列 nums = [-1,2,1,-4], 和 target = 1.

與 target 最接近的三個數的和為 2. (-1 + 2 + 1 = 2).

若陣列長度小於3,返回

排序陣列

遍歷陣列

跳過重複元素

設定左指標left和右指標right,當left < right 時,迴圈

get_nums = nums[i] + nums[left] + nums[right], 如果get_nums = target ,返回target

若abs(get_nums - target) < abs(res - target) 說明get_nums更靠近目標,更新res

剪枝 返回結果

class

給定乙個包含 n 個整數的陣列 nums 和乙個目標值 target,判斷 nums 中是否存在四個元素 a,b,c 和 d ,使得 a + b + c + d 的值與 target 相等?找出所有滿足條件且不重複的四元組。

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

示例:給定陣列 nums = [1, 0, -1, 0, -2, 2],和 target = 0。

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

排序

使用雙迴圈固定兩個數,用雙指標尋找另外兩個數,通過比較target大小,移動指標

剪枝,去重

class

找出不是兩個陣列共有的元素

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 張彤彧 浙江大學 給定兩個整型陣列,本題要求找出不是兩者共有的元素。輸入格式 輸入分別在2行中給出2個整型陣列,每行先給出正整數n 20 隨後是n個整數,其間以空格分隔。輸出格式 在一行中...

找出不是兩個陣列共有的元素

給定兩個整型陣列,本題要求找出不是兩者共有的元素。輸入格式 輸入分別在兩行中給出兩個整型陣列,每行先給出正整數n 20 隨後是n個整數,其間以空格分隔。輸出格式 在一行中按照數字給出的順序輸出不是兩陣列共有的元素,數字間以空格分隔,但行末不得有多餘的空格。題目保證至少存在乙個這樣的數字。同一數字不重...

陣列 06 找出不是兩個陣列共有的元素 20

給定兩個整型陣列,本題要求找出不是兩者共有的元素。輸入格式 輸入分別在2行中給出2個整型陣列,每行先給出正整數n 20 隨後是n個整數,其間以空格分隔。輸出格式 在一行中按照數字給出的順序輸出不是兩陣列共有的元素,數字間以空格分隔,但行末不得有多餘的空格。題目保證至少存在乙個這樣的數字。同一數字不重...