如何非空数组如何将0放前面1放后面时间复杂度O(n)空间复杂度o(1)

36 阅读1分钟
function getArr(arr){
  let start = 0 , end = arr.length - 1;
  while(start < end){
    while(arr[start] !== 1 && start < end){
      start++
    }
    while(arr[end] !== 0 && start < end){
     end--;
    }
    [arr[start],arr[end]] = [arr[end],arr[start]]
    start++;
    end--;
  }
  return arr
}
  console.log(getArr([0,1,0,1,1,1,1,0,0,0,1])) //(11) [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1]