中级农民
- 积分
- 108
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2020-9-2
- 最后登录
- 1970-1-1
|
九月第一天刷题~这一周把会的总结一遍下周开始按照题号刷,完整的了解一下可能出现的所有算法,之后争取不看tag就知道用什么解题,并且能有几种优劣对比
个觉得逼自己每天刷题比周末一次性刷一整天要有意义
题852:peak Index in a Mountain Array二分法
var peakIndexInMountainArray = function(A) {
let peak = 0;
for(let x=1; x< A.length; x++){
if(A[x] >= A[peak]){
peak = x;
}
}
return peak;
};
var peakIndexInMountainArray = function(A) {
let lo =0;
let hi = A.length -1 ;
while(lo < hi){
let mid = Math.floor((lo+hi)/2);
if(A[mid] < A[mid+1]){
lo = mid +1;
} else {
hi = mid;
}
}
return lo;
};
题875Koko Eating Bananas
var minEatingSpeed = function (piles, H) {
var left = 1;
var right = Math.max(...piles);
while (left < right) {
var mid = Math.floor(left + (right - left) / 2);
if (feasible(mid, piles, H)) right = mid;
else left = mid + 1;
}
return left
};
function feasible(bananas, nums, h) {
var hours = 0;
for (let i = 0; i < nums.length; i++) {
hours += Math.ceil(nums[i] / bananas);
if (hours > h) return false;
}
return true;
}
题917Reverse Only Letters
var reverseOnlyLetters = function(S) {
let l = 0, r= S.length-1, res=S.split('');
while(l<r){
if(S[l].match(/[a-z]/i) && S[r].match(/[a-z]/i)){
res[l] = S[r];
res[r] = S[l];
l++; r--;
}else{
if(!S[r].match(/[a-z]/i)){
r--;
}else if(!S[l].match(/[a-z]/i)){
l++;
}else{
l++; r--;
}
}
}
return res.join('');
};
|
|