diff --git a/3sum/higeuni.js b/3sum/higeuni.js new file mode 100644 index 000000000..d08950171 --- /dev/null +++ b/3sum/higeuni.js @@ -0,0 +1,43 @@ +// complexity +// time: O(n^2) +// - sort: O(n log n) +// - for loop: O(n) +// - while loop: O(n) +// space: O(n) +// - sortedNums: O(n) +// - else : O(1) + +var threeSum = function(nums) { + const sortedNums = nums.sort((a, b) => a - b) + const lengthOfArray = nums.length; + const answer = []; + + for(let i = 0; i < lengthOfArray; i++ ) { + if (i > 0 && nums[i] === nums[i - 1]) continue; + const target = (-1) * sortedNums[i]; + + let left = i + 1; + let right = lengthOfArray - 1; + + while(left < right) { + const sumOfLeftAndRight = sortedNums[left] + sortedNums[right]; + const diff = sumOfLeftAndRight - target; + + if( diff > 0 ){ + right -= 1; + } else if ( diff < 0 ){ + left += 1 + } else { + answer.push([sortedNums[i], sortedNums[left], sortedNums[right]]); + // 중복되는 부분을 처리하는 과정에서 계속 fail되어 찾아보니 이렇게 해야 통과되었다. + while(left < right && sortedNums[left] === sortedNums[left + 1]) left ++; + while(left < right && sortedNums[right] === sortedNums[right - 1]) right --; + + left++; + right--; + } + } + } + return answer +}; + diff --git a/climbing-stairs/higeuni.js b/climbing-stairs/higeuni.js new file mode 100644 index 000000000..ea9b321e0 --- /dev/null +++ b/climbing-stairs/higeuni.js @@ -0,0 +1,20 @@ +// complexity +// time: O(n) +// - for loop: O(n) +// space: O(1) +// - n에 관계없이 상수개의 변수만 사용되므로 O(1) + +var climbStairs = function(n) { + let num1 = 1; + let num2 = 1; + let temp = 0; + + for(let i = 2; i<=n; ++i ) { + temp = num2; + num2 = num1 + num2; + num1 = temp; + } + + return num2; +}; + diff --git a/valid-anagram/higeuni.js b/valid-anagram/higeuni.js new file mode 100644 index 000000000..72e662abc --- /dev/null +++ b/valid-anagram/higeuni.js @@ -0,0 +1,14 @@ +// complexity +// time: O(n log n) +// - sort: O(n log n) +// - split: O(n) +// - join: O(n) +// space: O(n) +// - sortedS: O(n) +// - sortedT: O(n) +// - else : O(1) + +var isAnagram = function(s, t) { + return s.split('').sort().join('') === t.split('').sort().join('') +}; +