[LeetCode] 169. Majority Element

ming0ยท2024๋…„ 4์›” 24์ผ
0

์ฝ”๋”ฉํ…Œ์ŠคํŠธ

๋ชฉ๋ก ๋ณด๊ธฐ
4/6
post-thumbnail

๐Ÿ‘ฟ ๋ฌธ์ œย 169. Majority Element

nums ๋ฐฐ์—ด์—์„œ ๋นˆ๋„์ˆ˜๊ฐ€ ๋†’์€ ์ˆซ์ž return ํ•˜๊ธฐ

๐Ÿ˜ˆ ํ’€์ด

โœ”๏ธ ์ฒซ๋ฒˆ์งธ ํ’€์ด

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function (nums) {
    let map = new Map()

    for (let i = 0; i < nums.length; i++) {
        let getMap = map.get(nums[i])
        if (!getMap) {
            map.set(nums[i], 1)
            continue;
        }

        map.set(nums[i], getMap + 1)
    }

    let maxKey = 0
    let maxNum = 0
    for (let [key, value] of map) {
        if (value > maxNum) {
            maxKey = key
            maxNum = value
        }
    }

    return maxKey
};
  1. Map์„ ์ด์šฉํ•ด์„œ map ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  2. nums๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ map ๊ฐ์ฒด์— ์š”์†Œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ ํ›„ ์—†์œผ๋ฉด value๋ฅผ 1๋กœ set ํ•ด์ค€๋‹ค.
  3. ์žˆ์œผ๋ฉด ๊ธฐ์กด value + 1
  4. map์˜ key, value๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ value๊ฐ€ maxNum๋ณด๋‹ค ํฌ๋ฉด maxKey๋ฅผ key, maxNum์„ value๋กœ ์„ค์ •ํ•œ๋‹ค.
  5. ์ตœ์ข… maxKey๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์‹œ๊ฐ„๋ณต์žก๋„ : O(n) // Map O(n) + for๋ฌธ O(n) + for๋ฌธ O(n)
๊ณต๊ฐ„๋ณต์žก๋„ : O(n) // Map O(n)

โœ”๏ธ ๋‘๋ฒˆ์งธ ํ’€์ด

Follow-up! ๊ณต๊ฐ„๋ณต์žก๋„ O(1)๋กœ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

/**
 * @param {number[]} nums
 * @return {number}
 */
var majorityElement = function (nums) {
    let majNum;
    let count = 0;

    for (let num of nums) {
        if (count === 0) {
            majNum = num
        }

        count += majNum === num ? 1 : -1
    }

    return majNum
};
  1. majNum ์„ ์–ธ, count=0 ์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ค€๋‹ค.
  2. nums๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ count๊ฐ€ 0์ด ๋  ๋•Œ majNum์„ ๋ณ€๊ฒฝํ•ด์ค€๋‹ค.
  3. majNum, num์ด ๊ฐ™์œผ๋ฉด count +1, ๋‹ค๋ฅด๋ฉด -1์„ ํ•ด์ค€๋‹ค.
  4. ์ตœ์ข… majNum์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    ์‹œ๊ฐ„๋ณต์žก๋„ : O(n)
    ๊ณต๊ฐ„๋ณต์žก๋„ : O(1)

Boyer-Moore ํˆฌํ‘œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ๊ณต๊ฐ„๋ณต์žก๋„๋ฅผ O(1)๋กœ ์ค„์ด๊ณ  runtime์€ 10ms ์ค„์˜€๋‹ค!

Boyer-Moore ํˆฌํ‘œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€?
โžก๏ธ ์›์†Œ๋“ค ์ค‘ ์ ˆ๋ฐ˜ ์ด์ƒ ํฌํ•จ๋œ ์›์†Œ๋ฅผ linear time, constant space๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜. ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์˜ ์›์†Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๋ณด์žฅ์ด ๋  ๋•Œ, ๊ฒฐ๊ณผ๊ฐ’์€ ํ•ญ์ƒ ๊ณผ๋ฐ˜์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ๊ฐ€ ๋œ๋‹ค.
https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_majorityvote_algorithm

โœ… 1์ผ1์•Œ

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2024๋…„ 4์›” 24์ผ

1: ํž˜๋“ค๋‹ค๋ฉฐ ์šธ๋ฉด์„œ ๋‚˜์™€๋‹ฌ๋ผ๋Š” ์นด๋ฆฌ๋‚˜
2: ์ข‹์€ ์†Œ์‹์ด ์žˆ๋Š”๋ฐ ๋“ค์œผ๋Ÿฌ ์ž ๊น ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋ƒ๋Š” ์ด์žฌ์šฉ

๋‹น์‹ ์˜ ์„ ํƒ์€?

1๊ฐœ์˜ ๋‹ต๊ธ€