From 6db16e33bc825e9fae253c2acb68dd7418e22c9e Mon Sep 17 00:00:00 2001 From: choidabom Date: Fri, 3 Jan 2025 22:51:14 +0900 Subject: [PATCH] 268. Missing Number --- missing-number/choidabom.ts | 40 +++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 missing-number/choidabom.ts diff --git a/missing-number/choidabom.ts b/missing-number/choidabom.ts new file mode 100644 index 000000000..9082f3c02 --- /dev/null +++ b/missing-number/choidabom.ts @@ -0,0 +1,40 @@ +/** + * Runtime: 19ms, Memory: 52.48MB + * + * 접근 + * 직관적으로 생각했을 때, 0부터 n까지의 숫자 중에서 없는 숫자를 찾아야 한다. + * 완전 탐색으로 정렬한 배열에서 순서대로 비교하면서 없는 숫자를 찾을 수 있다. + * Time Complexity: O(N) + * Space Complexity: O(N) + * + * Follow up: Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity? + */ + +function missingNumber(nums: number[]): number { + const numsLen = nums.length; + const sortedNums = nums.sort((a, b) => a - b); // 오름차순 정렬 + + for (let i = 0; i <= numsLen; i++) { + if (i !== sortedNums[i]) { + return i; + } + } +} + +/** + * Runtime: 1ms, Memory: 51.96MB + * + * 접근 + * Follow up에 대한 해결 방법 + * 0부터 n까지의 숫자의 합을 구한 뒤, 주어진 배열의 합을 빼면 없는 숫자를 찾을 수 있다. + * Time Complexity: O(n) + * Space Complexity: O(1) + */ + +function missingNumber(nums: number[]): number { + const size = nums.length; + const sum = (size * (size + 1)) / 2; + const accurate = nums.reduce((sum, num) => sum + num, 0); + + return sum - accurate; +}