Skip to content

Commit 53f7ba6

Browse files
committed
feat(soobing): week11 > missing-number
1 parent 84105a9 commit 53f7ba6

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

β€Žmissing-number/soobing.ts

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/**
2+
* 문제 μ„€λͺ…
3+
* - 0λΆ€ν„° nκΉŒμ§€ μˆ«μžκ°€ 쀑볡 없이 단 ν•˜λ‚˜λ§Œ λΉ μ ΈμžˆλŠ” 숫자 μ°ΎκΈ°
4+
*
5+
* 아이디어
6+
* 1) 체크 λ°°μ—΄ 생성
7+
* - 0λΆ€ν„° nκΉŒμ§€ μˆ«μžκ°€ 쀑볡 없이 단 ν•˜λ‚˜λ§Œ λΉ μ ΈμžˆλŠ” 숫자 μ°ΎκΈ°
8+
*
9+
* 2) μˆ˜ν•™μ  μ ‘κ·Ό
10+
* - n*(n+1)/2: λ°°μ—΄μ˜ ν•© - μ£Όμ–΄μ§„ λ°°μ—΄μ˜ ν•© = λΉ μ§„ 숫자
11+
*
12+
* 3) XOR ν™œμš©
13+
* - 0 ^ 1 ^ 2 ^ ... ^ n : λͺ¨λ“  숫자 XOR
14+
* - nums[0] ^ nums[1] ^ ... ^ nums[n-1] : λ°°μ—΄ λ‚΄ μ‘΄μž¬ν•˜λŠ” μˆ«μžλ“€ XOR
15+
* - 이 λ‘˜μ„ XORν•˜λ©΄, μ€‘λ³΅λ˜λŠ” μˆ«μžλŠ” λͺ¨λ‘ μƒμ‡„λ˜μ–΄ λΉ μ§„ 숫자만 λ‚¨μŒ.
16+
*/
17+
18+
function missingNumber(nums: number[]): number {
19+
const check = new Array(nums.length).fill(false);
20+
21+
nums.forEach((num) => (check[num] = true));
22+
23+
for (let i = 0; i < nums.length; i++) {
24+
if (!check[i]) return i;
25+
}
26+
return nums.length;
27+
}
28+
29+
// μˆ˜ν•™μ  μ ‘κ·Ό
30+
function missingNumber2(nums: number[]): number {
31+
const n = nums.length;
32+
const expectedSum = (n * (n + 1)) / 2;
33+
const actualSum = nums.reduce((acc, cur) => acc + cur, 0);
34+
return expectedSum - actualSum;
35+
}
36+
37+
// XOR ν™œμš©
38+
function missingNumber3(nums: number[]): number {
39+
let xor = 0;
40+
for (let i = 0; i < nums.length; i++) {
41+
xor ^= i ^ nums[i];
42+
}
43+
44+
return xor ^ nums.length;
45+
}

0 commit comments

Comments
Β (0)