js算法双指针

左右双指针
1.求和
function sum(arr,target){
    
    
  let left = 0,right = arr.length-1
  while(left<right){
    
    
    if(arr[left]+arr[right]>target){
    
    
      right--
    }else if(arr[left]+arr[right]<target){
    
    
      left++
    }else if(arr[left]+arr[right]==target){
    
    
      return [left,right]
    } 
  }
}
2.数组反转
function reverse(arr){
    
    
  let left = 0, right = arr.length-1
  while(left < right){
    
    
    [arr[left],arr[right]] = [arr[right],arr[left]]
    left++
    right--
  }
  return arr
}
快慢指针
[字符串压缩](https://leetcode-cn.com/problems/compress-string-lcci/)
function compressString(S){
    
    
	let newS = '', i = 0, j = 0
	while(j < S.length - 1){
    
    
		if(S[j]!==S[j+1]){
    
    
			newS += S[i]+(j-i+1)
			i = j+1
		}
		j++
	}
	newS += S[i]+(j-i+1)
	return newS.length<S.length?S
}

猜你喜欢

转载自blog.csdn.net/m0_37285193/article/details/114590366