leetcode Day58 剑指专项92-93

115 阅读1分钟

565. 数组嵌套

var arrayNesting = function(nums) {
    let res=0
    let visited=new Array(nums.length).fill(0)
    for(let i=0;i<nums.length;i++){
        let cur=0
        while(!visited[i]){
            visited[i]=true
            i=nums[i]
            cur++
        }
        res=Math.max(res,cur)
    }
    return res
};

剑指 Offer II 092. 翻转字符

var minFlipsMonoIncr = function(s) {
    let dp = 0, one = 0
    for (let i of s) {
        if (i == '0') {
            dp = Math.min(one, dp+1)
        } else {
            one++
        }
    }
    return dp
};

[剑指 Offer II 093. 最长斐波那契数列](leetcode.cn/problems/Q9…

var lenLongestFibSubseq = function(arr) {
    let map=new Map()
    for(let i=0;i<arr.length;i++){
        map.set(arr[i],i)
    }
    const dp=new Array(arr.length).fill(0).map(()=>new Array(arr.length).fill(0))
    let res=0
    for(let i=0;i<arr.length;i++){
        for(let j=arr.length-1;j>=0;j--){
            if(arr[j]*2<=arr[i]){
                break
            }
            if(map.has(arr[i]-arr[j])){
                let k=map.get(arr[i]-arr[j])
                dp[j][i]=Math.max(dp[k][j]+1,3)
                res=Math.max(res,dp[j][i])
            }
        }
    }
    return res
};