From a1a9fd834ce2c71b4eb8c900534ea77c15db45cb Mon Sep 17 00:00:00 2001 From: Nari Jeong <92130993+naringst@users.noreply.github.com> Date: Wed, 4 Sep 2024 22:54:03 +0900 Subject: [PATCH 1/3] Valid Palindrome Solution --- valid-palindrome/naringst.js | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 valid-palindrome/naringst.js diff --git a/valid-palindrome/naringst.js b/valid-palindrome/naringst.js new file mode 100644 index 000000000..5007bc9d1 --- /dev/null +++ b/valid-palindrome/naringst.js @@ -0,0 +1,29 @@ +/** + * @param {string} s + * @return {boolean} + */ + +/** + * Runtime: 66ms, Memory: 54.75MB + * Time complexity: O(s.length) + * Space complexity: O(s.length) + * + */ + +var isPalindrome = function (s) { + let trimmed = s.toLowerCase(); + let answer = []; + let checkAlphabet = /[a-zA-Z]/; + let checkNum = /[0-9]/; + + for (let alpha of trimmed) { + if (checkAlphabet.test(alpha) || checkNum.test(alpha)) { + answer.push(alpha); + } + } + + if (answer.join("") === answer.reverse().join("")) { + return true; + } + return false; +}; From ad805186c124a32ec135a91655ec5b02f739150a Mon Sep 17 00:00:00 2001 From: Nari Jeong <92130993+naringst@users.noreply.github.com> Date: Wed, 4 Sep 2024 23:37:41 +0900 Subject: [PATCH 2/3] Missing Number Solution --- missing-number/naringst.js | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 missing-number/naringst.js diff --git a/missing-number/naringst.js b/missing-number/naringst.js new file mode 100644 index 000000000..1a20722b9 --- /dev/null +++ b/missing-number/naringst.js @@ -0,0 +1,45 @@ +/** + * @param {number[]} nums + * @return {number} + */ + +/** + * Runtime: 63ms, Memory: 51.68MB + * Time complexity: O(nlogn) + * Space complexity: O(nlogn) + * + */ + +var missingNumber = function (nums) { + const n = nums.length; + nums.sort((a, b) => a - b); + + if (!nums.includes(0)) { + return 0; + } + for (let i = 0; i < n; i++) { + if (nums[i + 1] - nums[i] !== 1) { + return nums[i] + 1; + } + } + return nums[-1]; +}; + +/** + * NOTE + * if use 'sort()' -> O(nlogn) + * if you solve this problem without using sort(), can use sum of nums + */ + +var missingNumber = function (nums) { + const sumOfNums = nums.reduce((num, total) => num + total, 0); + + const n = nums.length; + const expectedSum = (n * (n + 1)) / 2; + + if (expectedSum === sumOfNums) { + return 0; + } else { + return expectedSum - sumOfNums; + } +}; From 022dd7d0ba12f813433d7d36bc0471a46c56859c Mon Sep 17 00:00:00 2001 From: Nari Jeong <92130993+naringst@users.noreply.github.com> Date: Wed, 4 Sep 2024 23:40:28 +0900 Subject: [PATCH 3/3] add: missing number better solution --- missing-number/naringst.js | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/missing-number/naringst.js b/missing-number/naringst.js index 1a20722b9..58ff1da97 100644 --- a/missing-number/naringst.js +++ b/missing-number/naringst.js @@ -43,3 +43,20 @@ var missingNumber = function (nums) { return expectedSum - sumOfNums; } }; + +/** + * NOTE + * or you can subtract while adding + */ + +var missingNumber = function (nums) { + let target = 0; + for (let i = 0; i <= nums.length; i++) { + target += i; + + if (i < nums.length) { + target -= nums[i]; + } + } + return target; +};