問題:
給一整數,將不同的位數放在陣列裡,將這個數字+1後回傳陣列。
範例:
1. 輸入:digits = [ 1, 2, 3 ]
輸出: [ 1, 2, 4 ]
2. 輸入: digits = [ 9 ]
輸出: [ 1, 0 ]
問題:
給一整數,將不同的位數放在陣列裡,將這個數字+1後回傳陣列。
範例:
1. 輸入:digits = [ 1, 2, 3 ]
輸出: [ 1, 2, 4 ]
2. 輸入: digits = [ 9 ]
輸出: [ 1, 0 ]
問題:
給一字串,回傳最後一個字的長度。
範例:
1. 輸入:s = "Hello World"
輸出: 5
2. 輸入: s = " fly me to the moon "
輸出: 4
3. 輸入: s = "a "
輸出: 1
問題:
給一已排序的數字陣列和一目標數字,回傳目標數字的位置。如目標數字不在陣列裡,回傳適合插入該數字的位置。使用時間複雜度為O(log n)的演算法。
範例:
1. 輸入:nums = [ 1, 3, 5, 6 ], target = 5
輸出: 2
2. 輸入: nums = [ 1, 3, 5, 6 ], target = 2
輸出: 1
3. 輸入: nums = [ 1, 3, 5, 6 ], target = 7
輸出: 4
提問:
沒有
一般想法:
線性搜尋,但這是O(n)。
進階解法:
二元搜尋
程式:
var searchInsert = function (nums, target) { | |
let lo = 0; | |
let hi = nums.length - 1; | |
while (lo <= hi) { | |
let mi = Math.floor((lo + hi) / 2); | |
if (target > nums[mi]) { | |
lo = mi + 1; | |
} else if (target < nums[mi]) { | |
hi = mi - 1 | |
} | |
else { | |
return mi; | |
} | |
} | |
return lo; | |
}; |
問題:
給一數字陣列,陣列內有部分數字重複,把每個不同的數字移動到陣列最前面,回傳有幾個不同的數字。只能在同一個陣列內修改,不能開新陣列。
範例:
1. 輸入:nums = [ 1, 1, 2 ]
輸出: 2, nums = [ 1, 2, _ ] (只會檢查前面不同的數字,那之後的數字都不檢查)
2. 輸入: nums = [ 0, 0, 1, 1, 1, 2, 2, 3, 3, 4 ]
輸出: 5, nums = [ 0, 1, 2, 3, 4, _, _, _, _, _ ]
問題:
給一括號字串,檢查括號順序是否正確
範例:
1. 輸入: s = "()[]{}"
輸出: true
2. 輸入: s = "(]"
輸出: false
3. 輸入: s = "([)]"
輸出: false
問題:
給一字串陣列,找出最大相同開頭
範例:
1. 輸入: strs = [ "flower", "flow", "flight" ]
輸出: "fl"
2. 輸入: strs = [ "dog", "racecar", "car" ]
輸出: ""
問題:
把羅馬數字轉成阿拉伯數字
範例:
1. 輸入: s ="III" 輸出: 3
2. 輸入: s ="LVIII" 輸出: 58
3. 輸入: s ="MCMXCIV" 輸出: 1994
問題:
給一整數,檢測是否正著唸和倒著唸都一樣
範例:
1. 輸入: x =121 輸出: true
2. 輸入: x =-121 輸出: false (反過來是121-)
3. 輸入: x =10 輸出: false(反過來是01)
問題:
給一整數陣列與一個整數和,陣列中有兩個數字相加為其整數和,回傳兩個數字的位置,只有一組解
範例:
輸入: nums = [ 2, 7, 11, 15 ]
target = 9
輸出: [0,1]