目錄javascript
給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和爲目標值的那 兩個 整數,並返回他們的數組下標。前端
你能夠假設每種輸入只會對應一個答案。可是,你不能重複利用這個數組中一樣的元素。java
示例:git
給定 nums = [2, 7, 11, 15], target = 9 由於 nums[0] + nums[1] = 2 + 7 = 9 因此返回 [0, 1]
350. 兩個數組的交集 IIgithub
這道題的意思其實就是找一個target-nums[i]
的值,而hashMap在這方面很擅長,複雜度最差也是O1算法
HashMap,暴力法數組
使用兩層循環,外層循環計算當前元素與 targettarget 之間的差值,內層循環尋找該差值,若找到該差值,則返回兩個元素的下.code
使用一層循環,遍歷數組的同時查找target-nums[i]
的值,找到則當即返回target-nums[i]
值的下標和i的下標ip
/** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = function(nums, target) { // 暴力法 // for(let i = 0;i<nums.length;i++){ // for(let j = i+1;j<nums.length;j++){ // if(nums[i]===target-nums[j]) return [i,j] // } // } // return [] const map = new Map(); for (let i = 0; i < nums.length; i++) { if (map.has(target - nums[i])) {return [map.get(target - nums[i]), i];} map.set(nums[i], i); } };
[1, 2], [11, 1, 2, 3, 2]
的運行結果[ 1, 2 ]
執行用時 :68 ms, 在全部 javascript 提交中擊敗了90.45%的用戶 內存消耗 :34.8 MB, 在全部 javascript 提交中擊敗了33.61%的用戶
1. 兩數之和
內存