leetcode - 兩數(shù)之和
題意
給定一個(gè)整數(shù)數(shù)組nums和一個(gè)整數(shù)目標(biāo)值target,請(qǐng)你在該數(shù)組中找出 和為目標(biāo)值 的那兩個(gè) 整數(shù),并返回它們的數(shù)組下標(biāo)。
你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案。但是,數(shù)組中同一個(gè)元素不能使用兩遍。
你可以按任意順序返回答案。
示例
示例 1:
輸入:nums =?[2,7,11,15], target = 9
輸出:[0,1]
解釋:因?yàn)?nums[0]?+ nums[1]?== 9 ,返回?[0, 1]?。
示例 2:
輸入:nums =?[3,2,4], target = 6
輸出:[1,2]
示例 3:
輸入:nums =?[3,3], target = 6
輸出:[0,1]
提示:
2 <= nums.length <= 103-109 <= nums[i] <= 109-109 <= target <= 109只會(huì)存在一個(gè)有效答案
題目出處
鏈接:https://leetcode-cn.com/problems/two-sum
思路
抓重點(diǎn)就是,在數(shù)組 nums 中找兩個(gè)元素使其與目標(biāo)值 target 相等,規(guī)則是數(shù)組 nums 里面的每一個(gè)元素只能使用一次,為了讓程序更加容易通過,出題人限定了輸入的輸出答案有且僅有一個(gè),而且不需要你考慮順序,你只需要返回其下標(biāo)就好了。
最通用的手段,暴力破解嘛,兩層循環(huán)分別找出元素中的兩個(gè)值,如果與目標(biāo) target 值吻合就返回下標(biāo),退出程序。
代碼
/**
?*?@param?{number[]}?nums
?*?@param?{number}?target
?*?@return?{number[]}
?*/
const?twoSum?=?function?(nums,?target)?{
??for?(let?i?=?0;?i?????for?(let?j?=?i?+?1;?j???????if?(nums[i]?+?nums[j]?===?target)?{
????????return?[i,?j];
??????}
????}
??}
};
export?default?twoSum;
測(cè)試
腳本
import?twoSum?from?'../../code/leetcode/1';
describe('test?function?twoSum:',?()?=>?{
??test('test?case?nums?=?[3,?3],?target?=?6',?()?=>?{
????const?data?=?twoSum([3,?3],?6);
????expect(data).toEqual([0,?1]);
??});
??test('test?case?nums?=?[2,7,11,15],?target?=?9',?()?=>?{
????const?data?=?twoSum([2,?7,?11,?15],?9);
????expect(data).toEqual([0,?1]);
??});
??test('test?case?nums?=?[3,2,4],?target?=?6',?()?=>?{
????const?data?=?twoSum([3,?2,?4],?6);
????expect(data).toEqual([1,?2]);
??});
});
結(jié)果
????coding?git:(master)???npm?run?test
>[email protected]?test
>?jest
?PASS??test/leetcode/1.test.js
??test?function?twoSum:
??????test?case?nums?=?[3,?3],?target?=?6?(2?ms)
??????test?case?nums?=?[2,7,11,15],?target?=?9
??????test?case?nums?=?[3,2,4],?target?=?6?(1?ms)
Test?Suites:?1?passed,?1?total
Tests:???????3?passed,?3?total
Snapshots:???0?total
Time:????????0.545?s,?estimated?1?s
Ran?all?test?suites.
???coding?git:(master)??
思考
有沒有更好的解法
存在多個(gè)有效答案是什么情況?
按從小到大的順序返回是什么情況?
如果改成和為目標(biāo)值的三個(gè)整數(shù)呢?
這里筆者象征性地提了幾個(gè)問題,供讀者們閱讀后思考,挖坑不填坑哈哈,歡迎在留言下方評(píng)論,分享你的見解和想法。
說明
本文首發(fā)于 GitHub 倉庫https://github.com/ataola/coding,線上閱讀地址:https://zhengjiangtao.cn/coding/,轉(zhuǎn)載請(qǐng)注明出處,謝謝!
