示例:
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
思路:使用雙層for迴圈,外層遍歷陣列,尋找當前元素與target的差值,內層迴圈遍歷整個陣列,尋找有沒有值與差值相同。如果找到,返回兩個元素的下標。
let
twosum
=function
(nums, target)}}
;console.
log(
twosum([
1,2,
3,4,
5],8
))
思路:使用一層迴圈遍歷整個陣列,首先計算當前元素與target的差值d_value ,然後以d_value 為下標到陣列result中尋找。如果有值,返回下標;如果沒有找到,將當前元素存入result中(存入下標和值均為d_value)。
在這個方法中,最終的result陣列中,有很多空元素位置。只有以nums陣列中的元素為下標的地方有值,且值為nums陣列中的元素本身。
let
twosum
=function
(nums, target)
result[nums[i]
]= i;}}
;console.
log(
twosum([
13,26,
4,14,
24],28
))
乙個map類似於乙個物件,但相對於物件更加強大,其鍵可以是多種型別 es6新語法
通過map可以更加方便的設定、獲取、比較值
let
twosum
=(nums, target)
=>
targetmap.
set(nums[i]
, i)}}
;console.
log(
twosum([
13,26,
4,14,
24],28
));
每日一題 LeetCode
在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數。示例 1 輸入 7,5,6,4 輸出 5 限制 0 陣列長度 50000 思想是 分治演算法 所有的 逆序對 於 3 個部分 左邊區間的逆序對 右邊區間的逆序對 橫跨兩個區間的...
LeetCode每日一題(題1028)
最近在刷leetcode每日一題,每次做完之後總能有些收穫,所以想著不如每天寫個部落格記錄一下做的題目的解法以及自己寫的時候問題出在 從先序遍歷還原二叉樹 題目大意 給出乙個字串 1 2 3 4 5 6 7 1代表節點的值,前面的 個數代表節點的深度。如果只有乙個子節點,保證這個節點為左子節點。返回...
LeetCode每日一題(題139)
題目 題目大意 給出乙個字串s和乙個字串陣列words,判斷s是否能夠拆分成多個words中的字串。分析 這道題比較簡單的方式應該是採用動態規劃來做。對於任意乙個字串中的區間,可以判斷該區間組成的字串是否在字典中,如果是,則這個區間的真假取決於前面那個區間的真假。給出狀態轉移方程dp i dp j ...