6000. 对奇偶下标分别排序
思路:建立两个数组,取出元素后,按要求排序,再重新组合为新数组并返回。
var sortEvenOdd = function (nums) {
let len = nums.length;
if (len == 2) {
return nums;
}
let odd = [], even = [], res = [], index = 0;
nums.forEach((item, index) => {
if (index % 2 == 0) {
even.push(item);
} else {
odd.push(item);
}
})
odd.sort((a, b) => b - a);
even.sort((a, b) => a - b);
while (index < len / 2) {
even[index] && res.push(even[index]);
odd[index] && res.push(odd[index]);
index++;
}
return res;
};
6001. 重排数字的最小值
思路:分正负两种情况,如果是负数,数字从大到小组合出来的数字最小,如果为正数则是从小到大排列出来的最小,其中正数需考虑最小数为零时,就需要找到第一个非零数放到开头。
var smallestNumber = function (num) {
let arr = Math.abs(num).toString().split('').sort((a, b) => a - b);
if (num < 0) {
return +arr.reverse().join('') * -1;
}
let index = arr.findIndex(i => i != 0);
let _num = arr[index];
arr.splice(index, 1);
arr.unshift(_num);
return +arr.join('');
};