摘要:開坑,以后每周刷一兩道一題目兩數(shù)之和給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,請你在該數(shù)組中找出和為目標(biāo)值的那兩個(gè)整數(shù),并返回他們的數(shù)組下標(biāo)。但是,你不能重復(fù)利用這個(gè)數(shù)組中同樣的元素。
開坑,以后每周刷一兩道LeetCode一、題目
兩數(shù)之和:
二、優(yōu)秀答案給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target,請你在該數(shù)組中找出和為目標(biāo)值的那 兩個(gè) 整數(shù),并返回他們的數(shù)組下標(biāo)。
你可以假設(shè)每種輸入只會(huì)對應(yīng)一個(gè)答案。但是,你不能重復(fù)利用這個(gè)數(shù)組中同樣的元素。示例
給定 nums = [2, 7, 11, 15], target = 9
因?yàn)?nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
/** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = function(nums, target) { const comp = {}; for(let i=0; i=0){ return [ comp[target - nums[i] ] , i] } comp[nums[i]] = i } };
遍歷數(shù)組,定義一個(gè)對象,
對象屬性的key是順序遍歷中數(shù)組項(xiàng)的value,對象屬性的value是數(shù)組項(xiàng)的下標(biāo)
comp[target-nums[i]] = i
一旦存在對象中target-nums[i]屬性的值(即數(shù)組項(xiàng)的下標(biāo))大于0,即存在數(shù)組中兩數(shù)之和等于target
if(comp[target - nums[i] ]>=0){ return [ comp[target - nums[i] ] , i] }
我還能說什么,map掌握得爐火純青。
三、我的答案公開處刑現(xiàn)場
/** * @param {number[]} nums * @param {number} target * @return {number[]} */ var twoSum = function (nums, target) { function isEqualToTarget(num1, num2) { if (num1 + num2 === target) { return true } else { return false } } function findTargetItem(arr, oldArr) { for (let i = 0; i < arr.length - 1; i++) { for (let j = i + 1; j < arr.length; j++) { if (isEqualToTarget(arr[i], arr[j])) { return [oldArr.indexOf(arr[i]), oldArr.length - 1 - oldArr.reverse().indexOf(arr[j])] } } } } const oldArray = nums.slice(0) nums.sort((a, b) => a - b) let tailIndex = nums.findIndex((value, index) => { return value >= target - nums[0] && index !== 0 }) if (tailIndex === -1) { // [5, 7, 11, 12] 18 return findTargetItem(nums, oldArray) } else if (isEqualToTarget(nums[0], nums[tailIndex])) { return [oldArray.indexOf(nums[0]), oldArray.length - 1 - oldArray.reverse().indexOf(nums[tailIndex])] } else { nums.length = tailIndex + 1 return findTargetItem(nums, oldArray) } };
當(dāng)時(shí)寫的主要想法依然是暴力遍歷,只不過做了一丁點(diǎn)兒優(yōu)化
nums.sort((a, b) => a - b) let tailIndex = nums.findIndex((value, index) => { return value >= target - nums[0] && index !== 0 })
先從小到大排序,然后去掉與數(shù)組最小值相加大于target的值。
這個(gè)過程算優(yōu)化吧/捂臉
好歹戰(zhàn)勝70%多的提交記錄,還有繼續(xù)的勇氣
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/102840.html
摘要:給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,請你在該數(shù)組中找出和為目標(biāo)值的那兩個(gè)整數(shù),并返回他們的數(shù)組下標(biāo)。示例給定因?yàn)樗苑祷胤椒ǎ┝夥?。函?shù)可以將一個(gè)數(shù)組轉(zhuǎn)化為一個(gè)從開始,值為數(shù)組對應(yīng)元素的字典。 給定一個(gè)整數(shù)數(shù)組 nums 和一個(gè)目標(biāo)值 target,請你在該數(shù)組中找出和為目標(biāo)值的那 兩個(gè) 整數(shù),并返回他們的數(shù)組下標(biāo)。 你可以假設(shè)每種輸入只會(huì)對應(yīng)一個(gè)答案。但是,你不能重復(fù)利用這個(gè)數(shù)組中...
摘要:公眾號愛寫給定一個(gè)已按照升序排列的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值和,其中必須小于。示例輸入輸出解釋與之和等于目標(biāo)數(shù)。 公眾號: 愛寫bug(ID:icodebugs) 給定一個(gè)已按照升序排列 的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。 函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值 index1 和 index2,其中 index1 必須小于 index2。...
摘要:公眾號愛寫給定一個(gè)已按照升序排列的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值和,其中必須小于。示例輸入輸出解釋與之和等于目標(biāo)數(shù)。 公眾號: 愛寫bug(ID:icodebugs) 給定一個(gè)已按照升序排列 的有序數(shù)組,找到兩個(gè)數(shù)使得它們相加之和等于目標(biāo)數(shù)。 函數(shù)應(yīng)該返回這兩個(gè)下標(biāo)值 index1 和 index2,其中 index1 必須小于 index2。...
摘要:兩數(shù)之和問題各變種多解法小結(jié)聲明文章均為本人技術(shù)筆記,轉(zhuǎn)載請注明出處兩數(shù)之和等于題目大意給出未排序數(shù)組和指定目標(biāo),返回?cái)?shù)組中兩數(shù)之和的組合元素下標(biāo)要求下標(biāo)從開始,而且,保證題目中有且只有個(gè)可行解解法暴力時(shí)間復(fù)雜度求解解題思路暴力二重循環(huán)求解 兩數(shù)之和問題各變種多解法小結(jié) 聲明 文章均為本人技術(shù)筆記,轉(zhuǎn)載請注明出處:[1] https://segmentfault.com/u/yzwal...
摘要:分布式的管理和當(dāng)我在談?wù)摷軜?gòu)時(shí)我在談啥狀態(tài)碼詳解無狀態(tài)協(xié)議和請求支持哪些方法分層協(xié)議棧有哪些數(shù)據(jù)結(jié)構(gòu)運(yùn)用場景說說你常用的命令為什么要有包裝類面向?qū)ο蟮奶卣魇巧妒巧队惺裁春锰幭到y(tǒng)設(shè)計(jì)工程在線診斷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)索引背后的數(shù)據(jù)結(jié)構(gòu)及算法原理軟技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】當(dāng)我在談?wù)揜estFul架構(gòu)時(shí)我在談啥?...
閱讀 2126·2021-11-23 09:51
閱讀 3712·2021-10-20 13:49
閱讀 1718·2021-09-06 15:13
閱讀 1828·2021-09-06 15:02
閱讀 3181·2021-09-02 15:11
閱讀 899·2019-08-29 15:37
閱讀 1744·2019-08-29 13:24
閱讀 2283·2019-08-29 11:28