leetcode Day52 剑指专项 70-74

77 阅读1分钟

剑指 Offer II 070. 排序数组中只出现一次的数字

var singleNonDuplicate = function(nums) {
    if(nums.length===1)return nums[0]
    let idx=0
    while(idx<nums.length){
        if(nums[idx]===nums[idx+1]){
            idx+=2
        }else{
            break
        }
    }
    return nums[idx]
};

剑指 Offer II 072. 求平方根

var mySqrt = function(x) {
    let l=0,r=x
    while(l<=r){
        let mid=Math.floor((r-l)/2)+l
        if(mid*mid===x){
            return mid
        }else if(mid*mid<x){
            l=mid+1
        }else{
            r=mid-1
        }
    }
    return r
};

剑指 Offer II 073. 狒狒吃香蕉

var minEatingSpeed = function(piles, h) {
    let l=1,r=Math.max(...piles)
    let k=r
    while(l<r){
        let mid=Math.floor((r-l)/2)+l
        if(getTime(piles,mid)<=h){
            k=mid
            r=mid
        }else{
            l=mid+1
        }
    }
    return k
};
const getTime=(piles,k)=>{
    let res=0
    for(let i of piles){
        res+=Math.ceil(i/k)
    }
    return res
}

剑指 Offer II 074. 合并区间

var merge = function(intervals) {
    intervals.sort((a,b)=>a[0]-b[0])
    let res=[intervals[0]]
    for(let i=1;i<intervals.length;i++){
        const [l,r]=intervals[i]
        const [endL,endR]=res[res.length-1]
        if(l===intervals[i-1][0]){
            res[res.length-1][1]=Math.max(res[res.length-1][1],r)
        }else{
            if(l>endR){
                res.push([l,r])
            }else{
                if(r>endR){
                    res[res.length-1][1]=r
                }
            }
        }
    }
    return res
};