左右指针>>移除元素

133 阅读1分钟

移除元素针(左右指针)

leetcode27.移除元素

leetcode27.移除元素

let s = 0
for(let l = 0; l < nums.length; l++){
    if(nums[l] !== val){
      nums[s++] = nums[l]
    }
}
return s

leetcode26.删除有序数组中的重复项

leetcode26.删除有序数组中的重复项

let s = 0
for(let l = 1; l < nums.length; l++){
    if(nums[l] !== nums[l - 1]){
      nums[++s] = nums[l]
    }
}
return s + 1

leetcode283. 移动零

leetcode283. 移动零

let s = 0
  for(let f = 0; f < nums.length; f++){
    if(nums[f]!==0){
      const temp = nums[s]
      nums[s++] = nums[f]
      nums[f] = temp


      // [nums[s],nums[f]] = [nums[f],nums[s]]
      // s++;
    }
  }
  return nums

leetcode844.比较含退格的字符串

leetcode844.比较含退格的字符串

  let l = s.length - 1 , r = t.length - 1
  while(l >= 0 || r >= 0){
    let s1 = 0;
  // s循环
    while(l >= 0){
      if(s[l] === '#'){
        s1++;
        l--;
      }
      else if(s1--){
        l--;
      }else{
        break;
      }
    }
    let r1 = 0;
  // t循环
    while(r >= 0){
      if(t[r] === '#'){
        r1++;
        r--;
      }
      else if(r1--){
        r--;
      }else{
        break;
      }
    }
    if(s[l] !== t[r]){return false}
    l--;
    r--;
  }
  return true

leetcode977.有序数组的平方

leetcode977.有序数组的平方

   let l = 0;
  let r = nums.length - 1;
  let p = nums.length - 1
  const stack = []
  while(p >= 0){
    if(nums[l] * nums[l] < nums[r] * nums[r]){
      stack[p] = nums[r] * nums[r]
      r--;
    }else {
      stack[p] = nums[l] * nums[l]
      l++;
    }
    p--;
  }
  return stack