每天一道题,赛过活神仙 —— 给有序数组的平方排序

114 阅读1分钟

题目

给一个升序的数组的每一项的平方排序

栗子如下:

输入: [-4, -2, -1 , 0 , 3 , 7]
输出:[0, 1, 4, 9, 16, 49]

案例如下:

// 插入排序
function insertSort(arr, num){
    if(arr.length == 0){  // 空数组
        arr.push(num);
        return null;
    }
    for(let i = 0 ; i < arr.length ; i++){
        if(num <= arr[i]){
            arr.splice(i,0,num)
            break;
        }else if(i == arr.length -1){ // 最大的一个值
            arr.push(num);
            break;
        }
    }
}
// 输入升序数组
var sortedSquares = function(A) {
   if(!A || A.length ==0){
       return A;
   }else{
       let re = [];
       for(let i = A.length - 1 ; i >= 0; i--){
           if(A[i] >= 0){
               re.unshift( Math.pow(A[i],2));
               console.log(re);
           }else{
               insertSort(re, Math.pow(A[i],2));
           }

       }
       return re;
   }
};