念高職時為了禮拜五不要上沒興趣的課,就加入技藝競賽的校隊開始展開寫AMC-ICPC的練習直到高三畢業前
上了大學後為吃一頓免費便當,也會每個月都參與系上協辦的比賽
現在之所以回來再寫這些考題,是為了幾年後而準備,不過測資還是很好過XD
用空間換時間,用時間換空間
將大任務切割成小任務,小任務執行完後將結果回傳給大任務
問題:測資給定Array從中找出Tager是由哪兩個數相加而成,將那兩個Index透過Array回傳即可
解法:用HashMap透過Key Value方式來節省時間
每跑再迴圈跑一次從HashMap判斷Key是否存在
存在:則直接將target減去HashMap所得到的Index加上當前的index塞入Array回傳;
不存在:則直接將數值作為Key,Index作為value新增進去HashMap
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
const map = new Map();
const length = nums.length;
for (let i = 0; i < length; i++) {
if (map.has(target - nums[i])) {
return [map.get(target - nums[i]), i];
}
map.set(nums[i], i);
}
};