https://leetcode-cn.com/problems/two-sum/solution/jsshi-yong-map-by-hen-ji-shi/
map hashmap
function twoSum(nums: number[], target: number): number[] {let numsMap= new Map()for(let i =0,len = nums.length;i<len;i++){let index = numsMap.get(target-nums[i])if(index !== undefined){return [index,i]}numsMap.set(nums[i],i)}};
二分法
有序数组 无重复元素
// (版本一)左闭右闭区间var search = function(nums, target) {let l = 0, r = nums.length - 1;// 区间 [l, r]while(l <= r) {let mid = (l + r) >> 1;if(nums[mid] === target) return mid;let isSmall = nums[mid] < target;l = isSmall ? mid + 1 : l;r = isSmall ? r : mid - 1;}return -1;};// (版本二)左闭右开区间var search = function(nums, target) {let l = 0, r = nums.length;// 区间 [l, r)while(l < r) {let mid = (l + r) >> 1;if(nums[mid] === target) return mid;let isSmall = nums[mid] < target;l = isSmall ? mid + 1 : l;// 所以 mid 不会被取到r = isSmall ? r : mid;}return -1;};
备注 :
- number >> 位数 位运算,向右移几位 这里为1,相当于抹去了最后一位
- 3>>1 就是 11 => 1
- 4>>1 就是 100 =>10 就是2
- 方便取中位数 除以2 向下取整
