๋ฌธ์
๋ฐฐ์ด nums
๊ฐ ์ฃผ์ด์ง๋๋ฐ, ์ด๋ ๋ฐฐ์ด์๋ ๋ฒ์ [0,n]์ ์ํ๋ n๊ฐ์ ์ซ์๊ฐ ๋ด๊ฒจ์๋ค. ๋ฒ์๊ฐ [0,n]์ด๋ผ๋ฉด ์ด n-1๊ฐ์ ์ซ์๊ฐ ์์ด์ผํ๋๋ฐ, n๊ฐ๋ง ๋ด๊ฒจ์๋ค๋ ๊ฑด ์ซ์ ํ๊ฐ๊ฐ ๋น ์ ธ์๋ค๋ ๋ป. ๋น ์ง ์ซ์๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ๋ค.
leetcode.com/problems/missing-number/
์ฒซ ๋ฒ์งธ Solution
์ฝ๊ฒ ์๊ฐํ๋ค. ๊ธธ์ด n์ ๊ฐ์ง๋ boolean
๋ฐฐ์ด์ ๋ง๋ค๊ณ , ๋ฐฐ์ด nums
๋ฅผ ํ์ํ๋ฉด์ boolean
๋ฐฐ์ด์ visited(=๋ฐฐ์ด์ ์ซ์๊ฐ ๋์๋์ง) ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ boolean
๋ฐฐ์ด์ ๋ค์ ํ์ํ๋ฉด์ false
๋ก ๋จ์์๋ ์ซ์๋ฅผ ๋ฐ๊ฒฌํ๋ฉด int answer
๋ณ์์ ๋ด๊ณ ๋ฐ๋ก return
ํด๋ฒ๋ฆฐ๋ค.
๊ธฐ์กด ๋ฐฐ์ด nums
๋ฅผ ํ์ํ๋๋ฐ O(n)
+ boolean
๋ฐฐ์ด์ ํ์ํ๋๋ฐ ์ต๋ O(n)
์ด๊ธฐ ๋๋ฌธ์ ์ต์ข
์๊ฐ ๋ณต์ก๋๋ O(n)
๋ฐ์ ์ ๊ฑธ๋ฆฐ๋ค. ํ์ง๋ง, ๋ฐฐ์ด์ ํ๋ ๋ ๋ง๋ค์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ๋ณต์ก๋๊ฐ O(n)
์ด๋ค.
class Solution {
public int missingNumber(int[] nums) {
int answer = 0;
int len = nums.length;
boolean[] contained = new boolean[len+1];
for(int i=0;i<len;i++){
contained[nums[i]] = true;
}
for(int i=0;i<=len;i++){
if(!contained[i]) {
answer = i;
break;
}
}
return answer;
}
}
๋ ๋ฒ์งธ Solution
์๋ ๋งํฌ์์ ์ฐธ๊ณ ํ๋ค.
XOR ์ฐ์ฐ์์ ์ฑ๊ฒฉ์ ํ์ฉํ ํ์ด๋ฒ์ธ๋ฐ, ์๊ฐ๋ณต์ก๋ O(n)
์ ๊ณต๊ฐ๋ณต์ก๋๋ O(1)
์ด๋ค.
๊ทผ๋ฐ ๋ด๊ฐ ์์ง ์ดํด๋ฅผ ์ ๋ชปํ๊ฒ ๋ค. A^B^B=A์ธ ์ ์ ์ด์ฉํด์ ์ง ์ฝ๋๋ผ๊ณ ํ๋๋ฐ, ๊ณ ๋ฏผ์ด ๋ ํ์ํ๋ค.
์ธ ๋ฒ์งธ Solution
๊ฐ๋จํ ์ํ์์ ์ด์ฉํ ํ์ด๋ฒ์ด๋ค!
n์ด ๊ต์ฅํ ํด ๋์๋ overflow๊ฐ ๋ ์๋ ์๋ค๊ณ ํ์ง๋ง, ์ผ๋จ ๋ฌธ์ ๋ด์์๋ 1<=n<=10000
๋ผ๋ ์กฐ๊ฑด์ด ์์ผ๋๊น ์ด ํ์ด๋ฒ๋ ์ ์ฉ๊ฐ๋ฅํ๋ค. Overflow ๊ฑฑ์ ์์ด ํด๊ฒฐํ๋ ค๋ฉด ๋ ๋ฒ์งธ Solution์ ์ ์ฉํ๋ ๊ฒ ๋ง์ ๊ฒ ๊ฐ๋ค.
0๋ถํฐ n๊น์ง์ ์ดํฉ์ ๊ตฌํ๋ค๊ณ ํ์ ๋, ์ค์ ๋ก ๋์์ผ ํ๋ ๊ฐ์ ๊ณ์ฐํด ๋๊ณ (๋ณ์ sum
), ๋ฐฐ์ด nums
๋ฅผ ํ์ํ๋ฉด์ sum
์์ num[i]
์ ๊ฐ์ ๋นผ๊ฐ๋ค. ๊ทธ๋ ๊ฒ ๋๋ฉด ๋ฐฐ์ด์ ๋ค ๋์์ ๋ ์ต์ข
์ ์ผ๋ก ์ ํด์ง๋ sum
์ ๊ฐ์ด ๋น ์ง ์ซ์๊ฐ ๋๋ ๊ฒ!
๋๋ ์ด ํ์ด๋ฒ์ด ์ฒซ ๋ฒ์งธ ํ์ด๋ฒ๋ณด๋ค ํจ์ฌ ๋ซ๋ค๊ณ ์๊ฐํ๋๋ฐ, Runtime์ด๋ Memory ์ธก๋ฉด์์ ๋ชจ๋ ์ฒซ๋ฒ์งธ ํ์ด๋ฒ๋ณด๋ค ์ ์ข๊ฒ ๋์๋ค. ์ด์ ๊ฐ ๋ญ๊น?
class Solution {
public int missingNumber(int[] nums) {
int len = nums.length;
int sum = ((len+1)*len)/2;
for(int i=0;i<len;i++){
sum -= nums[i];
}
return sum;
}
}
'์๊ณ ๋ฆฌ์ฆ > ๋ฌธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฐ] ๋ฆฌํธ์ฝ๋ 706 - Design HashMap (0) | 2021.03.07 |
---|---|
[์๋ฐ] Leetcode 637 - Average of Levels in Binary Tree (0) | 2021.03.05 |
[์๋ฐ] Leetcode 234 - Palindrome Linked List (0) | 2021.03.01 |
[์๋ฐ] Leetcode 100 - Same Tree (0) | 2021.02.28 |
[์๋ฐ] ๋ฐฑ์ค 2042 - ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ (0) | 2021.01.06 |