leetcode 第 277 场周赛 笔记

121 阅读1分钟

2149. 按符号重排数组

思路:可以把正负数取出,重建一个数组,也可双指针交换位置。

var rearrangeArray = function (nums) {
    var arr1 = [], arr2 = [];
    for (let i = 0; i < nums.length; i++) {
        if (nums[i] > 0) {
            arr1.push(nums[i]);
        } else {
            arr2.push(nums[i]);
        }
    }
    let result = [];
    for (let i = 0; i < arr1.length; i++) {
        result.push(arr1[i]);
        result.push(arr2[i]);
    }
    return result;
};

2150. 找出数组中的所有孤独数字

思路:先计数,再判断,set是为了过滤已经筛选过的数字,直接用map判断也可。

var findLonely = function (nums) {
    let map = new Map(), res = [], set = new Set();
    nums.forEach(i => {
        map.set(i, map.has(i) ? map.get(i) + 1 : 1);
    });
    let key = map.keys();
    for (let i of key) {
        if (map.get(i) == 1) {
            if (!set.has(i)) {
                if (map.has(i - 1)) {
                    set.add(i - 1);
                    set.add(i);
                } else if (map.has(i + 1)) {
                    set.add(i + 1);
                    set.add(i);
                } else {
                    res.push(i);
                }
            }
        }
    }
    return res;
};