java演算法題-和為s的兩個數字

java演算法題-和為s的兩個數字

在leetcode(https://leetcode-cn。com/)上看到一道有趣的演算法題:

輸入一個遞增排序的陣列和一個數字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

這樣的題你會怎麼用java實現呢?

分享一下我的解題思路:

public int[] twoSum(int[] nums, int target) { int[] result=new int[2]; Map map=new HashMap<>(); for (int i=0;i=target){ break; } else{ int key=target-nums[i]; if(map。get(key)!=null){ result[0]=nums[i]; result[1]=nums[map。get(key)]; return result; } map。put(nums[i],i); } } for (int i=0;i

結果:

輸入:[2,7,11,15] 9

輸出:[2,7]

leetcode上對該答案的分析如下:

36 / 36

個透過測試用例

狀態:

透過

執行用時:

54 ms

記憶體消耗:

57.7 MB

執行用時分佈圖表

java演算法題-和為s的兩個數字

執行消耗記憶體分佈圖表

java演算法題-和為s的兩個數字

大家有更好的解題思路嗎?歡迎在評論區作答哈~