Skip to content

Commit 2bcb30a

Browse files
authored
Merge pull request #424 from naringst/main
[나리] WEEK04 Solutions
2 parents ec1875b + 022dd7d commit 2bcb30a

File tree

2 files changed

+91
-0
lines changed

2 files changed

+91
-0
lines changed

missing-number/naringst.js

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
/**
2+
* @param {number[]} nums
3+
* @return {number}
4+
*/
5+
6+
/**
7+
* Runtime: 63ms, Memory: 51.68MB
8+
* Time complexity: O(nlogn)
9+
* Space complexity: O(nlogn)
10+
*
11+
*/
12+
13+
var missingNumber = function (nums) {
14+
const n = nums.length;
15+
nums.sort((a, b) => a - b);
16+
17+
if (!nums.includes(0)) {
18+
return 0;
19+
}
20+
for (let i = 0; i < n; i++) {
21+
if (nums[i + 1] - nums[i] !== 1) {
22+
return nums[i] + 1;
23+
}
24+
}
25+
return nums[-1];
26+
};
27+
28+
/**
29+
* NOTE
30+
* if use 'sort()' -> O(nlogn)
31+
* if you solve this problem without using sort(), can use sum of nums
32+
*/
33+
34+
var missingNumber = function (nums) {
35+
const sumOfNums = nums.reduce((num, total) => num + total, 0);
36+
37+
const n = nums.length;
38+
const expectedSum = (n * (n + 1)) / 2;
39+
40+
if (expectedSum === sumOfNums) {
41+
return 0;
42+
} else {
43+
return expectedSum - sumOfNums;
44+
}
45+
};
46+
47+
/**
48+
* NOTE
49+
* or you can subtract while adding
50+
*/
51+
52+
var missingNumber = function (nums) {
53+
let target = 0;
54+
for (let i = 0; i <= nums.length; i++) {
55+
target += i;
56+
57+
if (i < nums.length) {
58+
target -= nums[i];
59+
}
60+
}
61+
return target;
62+
};

valid-palindrome/naringst.js

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
6+
/**
7+
* Runtime: 66ms, Memory: 54.75MB
8+
* Time complexity: O(s.length)
9+
* Space complexity: O(s.length)
10+
*
11+
*/
12+
13+
var isPalindrome = function (s) {
14+
let trimmed = s.toLowerCase();
15+
let answer = [];
16+
let checkAlphabet = /[a-zA-Z]/;
17+
let checkNum = /[0-9]/;
18+
19+
for (let alpha of trimmed) {
20+
if (checkAlphabet.test(alpha) || checkNum.test(alpha)) {
21+
answer.push(alpha);
22+
}
23+
}
24+
25+
if (answer.join("") === answer.reverse().join("")) {
26+
return true;
27+
}
28+
return false;
29+
};

0 commit comments

Comments
 (0)