diff --git a/sik9252/BinarySearch.js b/sik9252/BinarySearch.js new file mode 100644 index 0000000..7646588 --- /dev/null +++ b/sik9252/BinarySearch.js @@ -0,0 +1,25 @@ +/** + * @param {number[]} nums + * @param {number} target + * @return {number} + */ +var search = function (nums, target) { + let left = 0; + let right = nums.length - 1; + + while (left <= right) { + const mid = Math.floor((left + right) / 2); + + if (nums[mid] === target) { + return mid; + } + + if (nums[mid] < target) { + left = mid + 1; + } else { + right = mid - 1; + } + } + + return -1; +}; diff --git a/sik9252/FloodFill.js b/sik9252/FloodFill.js new file mode 100644 index 0000000..7cb5e82 --- /dev/null +++ b/sik9252/FloodFill.js @@ -0,0 +1,28 @@ +var floodFill = function (image, sr, sc, color) { + const startColor = image[sr][sc]; + if (startColor === color) return image; + + const dx = [-1, 1, 0, 0]; + const dy = [0, 0, -1, 1]; + const row = image.length; + const col = image[0].length; + + const queue = [[sr, sc]]; + image[sr][sc] = color; + + while (queue.length) { + const [x, y] = queue.shift(); + + for (let i = 0; i < 4; i++) { + const nx = x + dx[i]; + const ny = y + dy[i]; + + if (nx >= 0 && nx < row && ny >= 0 && ny < col && image[nx][ny] === startColor) { + image[nx][ny] = color; + queue.push([nx, ny]); + } + } + } + + return image; +}; diff --git a/sik9252/InvertBinaryTree.js b/sik9252/InvertBinaryTree.js new file mode 100644 index 0000000..92b6e54 --- /dev/null +++ b/sik9252/InvertBinaryTree.js @@ -0,0 +1,10 @@ +var invertTree = function (root) { + if (root === null) return null; + + [root.left, root.right] = [root.right, root.left]; + + invertTree(root.left); + invertTree(root.right); + + return root; +}; diff --git a/sik9252/ValidAnagram.js b/sik9252/ValidAnagram.js new file mode 100644 index 0000000..0dc2686 --- /dev/null +++ b/sik9252/ValidAnagram.js @@ -0,0 +1,16 @@ +var isAnagram = function (s, t) { + if (s.length !== t.length) return false; + + const map = new Map(); + + for (let i = 0; i < s.length; i++) { + map.set(s[i], (map.get(s[i]) || 0) + 1); + map.set(t[i], (map.get(t[i]) || 0) - 1); + } + + for (const value of map.values()) { + if (value !== 0) return false; + } + + return true; +};