題目
給定一個整數(shù)數(shù)組 nums
和一個目標值 target
暗赶,請你在該數(shù)組中找出和為目標值的那 兩個 整數(shù),并返回他們的數(shù)組下標倒堕。
你可以假設(shè)每種輸入只會對應一個答案闽巩。但是框冀,你不能重復利用這個數(shù)組中同樣的元素流椒。
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
需求思路
- 時間置換空間 想要空間 暴力循環(huán)
時間最差解法 每次用目標值target
減 數(shù)組中的值(從數(shù)組下標0開始) 預測最后結(jié)果 然后循環(huán)數(shù)組每次對比是否有這個最后結(jié)果 有則返回 無則繼續(xù)對比
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let res = undefined;
for (let i = 0; i < nums.length; i++) {
res = target - nums[i];
for (let j = i + 1; j < nums.length; j++) {
if (nums[j] == res) {
return [i, j];
}
}
}
};
從下面的執(zhí)行用時和內(nèi)存消耗可以看出 時間較長 但內(nèi)存消耗較少
- 空間置換時間 想要時間 一遍哈希表
空間最差解法 每次用目標值target
減 數(shù)組中的值(從數(shù)組下標0開始) 預測最后結(jié)果 先判斷新建的對象中是否存在最后結(jié)果 有則返回 無則將值添加至對象中繼續(xù)比對
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let res = undefined;
let obj = {};
let arr = [];
for (let i = 0; i < nums.length; i++) {
res = target - nums[i];
if (res in obj) {
arr.push(obj[res], i);
return arr;
}
obj[nums[i]] = i;
}
};
從下面的執(zhí)行用時和內(nèi)存消耗可以看出 時間較短 但內(nèi)存消耗較多
從此題引升到前端思路
思考懶加載和預加載
- 懶加載
時間置換空間 可能隨著滾動條的滾動 會重新加載當前所需的圖片 可能優(yōu)先加載較小的圖片按需加載
減少了加載頁面時候的內(nèi)存占用 將需要執(zhí)行的時間滯后 - 預加載
空間置換時間 在加載的時候 會加載當前所需的圖片資源和可能后面所需的圖片資源 增加了空間內(nèi)存的大小 但減少了后續(xù)使用所需的圖片的時間