04.二维数组中的查找
//右上角作为分界点,左边是小于部分,下边是大于部分。
var findNumberIn2DArray = function(matrix, target) {
let n = matrix.length;
if(n===0) return false;
let m = matrix[0].length;
if(m===0) return false;
let i = 0;
let j = m-1;
while(i<n&&j>=0){
if(matrix[i][j]>target){
j--;
}
else if(matrix[i][j]<target){
i++;
}
else{
return true;
}
}
return false;
};
11.旋转数组的最小数
//中间值和右值相等时,右指针左移一个即可,如果此时右值是最小值,也有替代了。
var minArray = function(numbers) {
let left = 0;
let right = numbers.length-1;
let mid = 0;
while(left<right){
mid = Math.floor((left+right)/2);
if(numbers[mid]>numbers[right]){
left = mid+1;
continue;
}
if(numbers[mid]<numbers[right]){
right = mid;
continue;
}
else right = right-1;
}
return numbers[left];
};
50.第一个只出现一次的字符
var firstUniqChar = function(s) {
let map = new Map();
for(let i of s){
if(map.has(i)){
map.set(i,map.get(i)+1);
}
else{
map.set(i,1);
}
}
for(let i of s){
if(map.get(i)===1){
return i;
}
}
return " ";
};