(Js)Leetcode442。配列内の繰り返しデータ

トピック:

1≤a[i]≤n(nは配列の長さ)である整数配列aが与えられると、一部の要素は2回表示され、他の要素は1回表示されます。

2回表示されるすべての要素を検索します。

余分なスペースを使用せずに、この問題をO(n)時間で解決できますか?

例:

入力:
[4,3,2,7,8,2,3,1]

出力:
[2,3]

アイデア:

配列内の数値の正と負を使用して、位置に対応する数値がすでに表示されているかどうかを示します

コード:

/**
 * @param {number[]} nums
 * @return {number[]}
 */
var findDuplicates = function(nums) {
    let res = [];
    for(let i = 0; i < nums.length; i++) {
        let num = Math.abs(nums[i]);
        if(nums[num - 1] > 0) {
            nums[num - 1] *= -1;
        } else {
            res.push(num);
        }
    }
    return res;
};

演算結果:

おすすめ

転載: blog.csdn.net/M_Eve/article/details/113889291