LeetCode第 279 场周赛笔记

124 阅读1分钟

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('');
};