μ΅κ·Ό λͺλ¬λμ LeetCode
λ¬Έμ νμ΄λ₯Ό λͺ»νλλ°,
μ¬ν΄μλ μ¬λ―Έμ μ±μ·¨κ°μ μν΄ μκ° λ λλ§λ€ 짬λ΄μ κ°λ¨ν λ¬Έμ λ₯Ό νλμ© λ€μ νμ΄λ³΄λ €κ³ ν©λλ€. π
π‘ λ¬Έμ
π― νμ΄ κ³Όμ
n
ν¬κΈ°μ λ°°μ΄μ΄ μ£Όμ΄μ§ λ, κ³Όλ°μ μ΄μμ μμλ₯Ό μ°Ύλ λ¬Έμ μ
λλ€.
ν΄μ맡μ μ΄μ©ν΄μ ꡬνν μλ μμ§λ§ μ’ λ μ΅μ νλ λ°©λ²μΌλ‘ ν΄κ²°ν μλ μμ΅λλ€.
μꡬ쑰건μ μν΄ κ³Όλ°μλ₯Ό μ°¨μ§νλ μμκ° λ°λμ μ‘΄μ¬νλ€λ κ²μ΄ 보μ₯λκΈ° λλ¬Έμ
보μ΄μ΄-λ¬΄μ΄ κ³Όλ°μ ν¬ν μκ³ λ¦¬μ¦
μ νμ©νλ©΄ O(n) μ μκ°λ³΅μ‘λμ O(1) μ κ³΅κ° λ³΅μ‘λλ₯Ό κ°μ§λ νμ΄λ₯Ό λ§λ€ μ μμ΅λλ€.
μ΄ μκ³ λ¦¬μ¦μ κ°λ¨ν νμ΄λ³΄μλ©΄, κΈΈμ΄ n μ κ°μ§λ λ°°μ΄ A μμ κ³Όλ°μλ₯Ό μ°¨μ§νλ μμ aκ° [n/2 + 1] κ° μμ κ²½μ°μ
λλ¨Έμ§ μμλ€μ κ°μμ ν©μ [n - (n/2 + 1)] μ΄λ©° μ΄λ μ λ [n/2 + 1] λ³΄λ€ ν΄ μ μμ΅λλ€.
λ°λΌμ μ΄ μ μ νμ©ν΄ major μ count λ₯Ό λ³μλ‘ λκ³ λ°°μ΄μ μννλ©΄μ
count κ° 0μΌλλ ν΄λΉ μμλ₯Ό majorλ‘, κ°μ μ’ λ₯μ μμλ₯Ό λ°κ²¬νλ©΄ +1, λ€λ₯΄λ€λ©΄ -1 μ νλ©΄
μ΅μ’ μ μΌλ‘ λ¨μμλ major κ° κ³Όλ° μ΄μμ μμκ° λ©λλ€.
λ³΄λ€ μμΈν λ΄μ©μ λ€μ λΈλ‘κ·Έλ₯Ό μ°Έμ‘°νλ©΄ μ’μ κ² κ°μ΅λλ€.
Boyer-Moore κ³Όλ°μ ν¬ν μκ³ λ¦¬μ¦
π¨π» μ½λ
/**
* @param {number[]} nums
* @return {number}
*/
var majorityElement = function(nums) {
let major = null
let count = 0
for (let num of nums) {
if (count === 0) {
major = num
}
count += (major === num ? 1 : -1)
}
return major
};
'π algorithm > leetcode' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
LeetCode 24 - Swap Nodes in Pairs (Medium) (0) | 2023.02.20 |
---|---|
LeetCode 35 - Search Insert Position (Easy) (0) | 2023.02.20 |
LeetCode 733 - Flood Fill (Easy) (0) | 2022.03.07 |
LeetCode 229 - Majority Element II (Medium) (0) | 2022.02.22 |
LeetCode 300 - Longest Increasing Subsequence (Medium) (0) | 2021.06.14 |
π¬ λκΈ