劍指 Offer 57 和為s的兩個數字

2022-06-13 19:18:08 字數 844 閱讀 4990

[劍指 offer 57. 和為s的兩個數字]

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。

示例 1:

輸入:nums = [2,7,11,15], target = 9

輸出:[2,7] 或者 [7,2]

示例 2:
輸入:nums = [10,26,30,31,47,60], target = 40

輸出:[10,30] 或者 [30,10]

限制:
1 <= nums.length <= 10^5

1 <= nums[i] <= 10^6

方法1:使用2分法進行查詢

class solution  else if (nums[temp] > nums[mid])  else if (nums[temp] == nums[mid]) ;}}

}return ;

}};

方法2:使用hash表,如果target-nums[i]在表中可以查詢得到,就可以直接返回結果,否則就將結果儲存在hash表中

class solution ;

} else

}return ;

}};

方法3:利用陣列排好序的特點,使用雙指標的方式

class solution ;

} else if (val > target) else if (val < target)

}return ;

}};

劍指offer 57 和為S的兩個數

題目一 這道題題目為 輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得他們的和正好是s。如果有多對數字的和等於s,輸出任意一對即可。解題思路分為三個步驟 1 對於已經排好序的陣列,先在陣列裡隨機選擇兩個數字,如果它們的和正好等於s,則輸出這兩個數字。2 如果隨機選擇的兩個數字和小於s,可...

劍指offer 57 和為s的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。對列表中元素根據target計算餘數,判斷餘數是否在例表中,有則返回。但時間複雜度高為o n 2 當列表很大時,超出時間限制。class solution def twosum...

劍指 Offer 57 和為s的兩個數字

輸入乙個遞增排序的陣列和乙個數字s,在陣列中查詢兩個數,使得它們的和正好是s。如果有多對數字的和等於s,則輸出任意一對即可。示例 1 輸入 nums 2,7,11,15 target 9 輸出 2,7 或者 7,2 示例 2 輸入 nums 10,26,30,31,47,60 target 40 輸...