leetcode Day17 双指针法

76 阅读1分钟

剑指 Offer 57. 和为s的两个数字

var twoSum = function(nums, target) {
    let l=0,r=nums.length-1
    while(l<=r){
        if(nums[l]+nums[r]>target){
            r--
        }
        else if(nums[l]+nums[r]<target){
            l++
        }
        else{
            return [nums[l],nums[r]]
        }
    }
};

剑指 Offer 57 - II. 和为s的连续正数序列

var findContinuousSequence = function(target) {
    let nums=[]
    let res=[]
    for(let i=1;i<=Math.ceil(target/2);i++){
        nums.push(i)
    }
    let l=0,r=l+1
    while(r<=nums.length){
        if(getSum(nums.slice(l,r))===target){
            res.push(nums.slice(l,r))
            l++
        }
        else if(getSum(nums.slice(l,r))<target){
            r++
        }else{
            l++
            r=l+1
        }
    }
    return res
};
const getSum=function(arr){
    let sum=0
    for(let i of arr){
        sum+=i
    }
    return sum
}

剑指 Offer 58 - I. 翻转单词顺序

var reverseWords = function(s) {
    let arr=s.trim(' ').split(' ')
    arr=arr.filter(function(item) {return item.length>=1})
    arr.reverse()
    return arr.join(' ')
};

剑指 Offer 58 - II. 左旋转字符串

var reverseLeftWords = function(s, n) {
    let res=''
    res=res+s.slice(n,s.length)
    res=res+s.slice(0,n)
    return res
};

剑指 Offer II 018. 有效的回文

var isPalindrome = function(s) {
    let str=''
    var reg = /^[A-Za-z]+$/;
    var reg1 = /^[0-9]+.?[0-9]*$/
    for(let i=0;i<s.length;i++){
        if(reg.test(s[i]) || reg1.test(s[i])){
            str=str+s[i].toLowerCase()
        }
    }
    let l=0,r=str.length-1
    while(l<=r){
        if(str[l]!==str[r]){
            return false
        }
        r--
        l++
    }
    return true
};

剑指 Offer II 019. 最多删除一个字符得到回文

var validPalindrome = function(s) {
    let l=0,r=s.length-1
    while(l<=r){
        if(s[l]!==s[r]){
            return isValidPalindrome(s.slice(l+1,r+1)) || isValidPalindrome(s.slice(l,r))
        }
        l++
        r--
    }
    return true
};
const isValidPalindrome=(arr)=>{
    let l=0,r=arr.length-1
    while(l<=r){
        if(arr[l]!==arr[r]){
            return false
        }
        l++
        r--
    }
    return true
}