一個名詞“非遞減有序數列”引發的事故
阿新 • • 發佈:2020-10-16
描述:一個非遞減有序數列,返回每個數字的平方組成的新陣列,這個新陣列也需要滿足非遞減有序數列
名詞普及
非遞減有序數列:意思是關鍵字遞增序排列,但是並非單調遞增(因為有重複的關鍵字)從小到大或者允許中間有相等的情形
1, 2, 3, 4, 5 遞增排列
9, 8, 7, 6, 5 遞減排列
1,2,3,3,4,5,8,8 非遞減排列
9,8,7,7,6,5,5,2,1 非遞增排列
一、Map
let arr = [-4,-1,0,3,4,10]; function squareArray(data){ let newArr = data.map(ele=>{ return Math.pow(ele,2) }) return newArr.sort(function(a,b){return a-b}) } var res = squareArray(arr); console.log(res);
二、雙指標
var squareArray = function(A) { let res = [] let left = 0 let right = A.length - 1 //5 let index = right //用這個記錄位置 while(left <= right) { let num1 = A[left]**2 //16 let num2 = A[right]**2 //100 16 if(num2 > num1) { res[index] = num2 [n,n,9,n,n,100] right-- //4 3 2 }else { res[index] = num1 [0,1,n,16,16,100] left++ //1 2 3 } index-- //4 3 2 1 0 } return res }; var res = squareArray(arr); console.log(res);