Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions contains-duplicate/nhistoy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/**
* @param {number[]} nums
* @return {boolean}
*/
var containsDuplicate = function (nums) {
// 1. Make hashmap that has previous value
let map = {};
// 2. Iterate nums to check nums[i] is duplicated or not
for (let i = 0; i < nums.length; i++) {
// 2.1 Check there is same value on the map
// 3. Return true when their is duplicated value
if (nums[i] in map) {
return true;
} else map[nums[i]] = i;
}
return false;
};

// TC: O(n)
// SC: O(n)

console.log(containsDuplicate([1, 2, 3, 1])); // true
console.log(containsDuplicate([1, 2, 3, 4])); // false
console.log(containsDuplicate([1, 1, 1, 3, 3, 4, 3, 2, 4, 2])); // true
Comment on lines +19 to +24
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

캬~ 복잡도 분석에 셀프 테스트까지? 멋지십니다! 👏👏👏

23 changes: 23 additions & 0 deletions two-sum/nhistory.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function (nums, target) {
// 1. Make a Hashmap to store { key(index) : value(target-num)}
let map = {};
// 2. Iterate to find value is equal to (target - nums[i])
// There is only one solution
for (let i = 0; i < nums.length; i++) {
const diff = target - nums[i];
// 3. If there is an index that has different value, return array
if (diff in map) return [map[diff], i];
map[nums[i]] = i;
}
};

// TC: O(n)
// SC: O(n)

console.log(twoSum([2, 7, 11, 15], 9));
console.log(twoSum([3, 2, 4], 6));
36 changes: 36 additions & 0 deletions valid-anagram/nhistory.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function (s, t) {
/*
// Split string and sort charaters
// Compare s and t after sorting
return s.split("").sort().join() === t.split("").sort().join()
// 92ms, 53.29MB
*/

// Made Hashmap and count number of each charater
let map = {};

// Check character length between s and t
if (s.length !== t.length) return false;
// Put a character and add or substract number
for (let i = 0; i < s.length; i++) {
map[s[i]] = map[s[i]] ? map[s[i]] + 1 : 1;
map[t[i]] = map[t[i]] ? map[t[i]] - 1 : -1;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

요렇게 작성하면 좀 더 자바스크립트 답지 않을까 생각해보았습니다.

Suggested change
map[s[i]] = map[s[i]] ? map[s[i]] + 1 : 1;
map[t[i]] = map[t[i]] ? map[t[i]] - 1 : -1;
map[s[i]] = (map[s[i]] ?? 0) + 1;
map[t[i]] = (map[t[i]] ?? 0) - 1;

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오 그렇네요! 피드백 감사드립니다. 그렇게 수정해 보겠습니다!

}

for (let i = 0; i < s.length; i++) {
if (map[s[i]] !== 0) return false;
}

return true;
};

console.log(isAnagram("anagram", "nagaram"));
console.log(isAnagram("rat", "car"));

// TC: O(n)
// SC: O(n)