diff --git a/3sum/Yiseull.py b/3sum/Yiseull.py new file mode 100644 index 0000000000..340b0a09e2 --- /dev/null +++ b/3sum/Yiseull.py @@ -0,0 +1,27 @@ +class Solution: + def threeSum(self, nums: list[int]) -> list[list[int]]: + answer = set() + + nums = sorted(nums) + + n = len(nums) + for i in range(n - 2): + if nums[i] > 0: + break + + if i > 0 and nums[i] == nums[i - 1]: + continue + + left, right = i + 1, n - 1 + while left < right: + threeSum = nums[i] + nums[left] + nums[right] + if threeSum < 0: + left += 1 + elif threeSum == 0: + answer.add((nums[i], nums[left], nums[right])) + left += 1 + right -= 1 + else: + right -= 1 + + return list(answer) diff --git a/climbing-stairs/Yiseull.py b/climbing-stairs/Yiseull.py new file mode 100644 index 0000000000..c124f1f6d8 --- /dev/null +++ b/climbing-stairs/Yiseull.py @@ -0,0 +1,9 @@ +class Solution: + def climbStairs(self, n: int) -> int: + if n <= 2: return n + + p, q = 1, 2 + for i in range(3, n + 1): + p, q = q, p + q + + return q diff --git a/product-of-array-except-self/Yiseull.py b/product-of-array-except-self/Yiseull.py new file mode 100644 index 0000000000..d700e99bb8 --- /dev/null +++ b/product-of-array-except-self/Yiseull.py @@ -0,0 +1,15 @@ +class Solution: + def productExceptSelf(self, nums: List[int]) -> List[int]: + n = len(nums) + answer = [1] + + # answer[i] -> nums[i] 왼쪽 값들의 곱 + for i in range(1, n): + answer.append(answer[i - 1] * nums[i - 1]) + + tmp = 1 + for i in reversed(range(n)): + answer[i] *= tmp + tmp *= nums[i] + + return answer diff --git a/valid-anagram/Yiseull.py b/valid-anagram/Yiseull.py new file mode 100644 index 0000000000..2e84c297f7 --- /dev/null +++ b/valid-anagram/Yiseull.py @@ -0,0 +1,8 @@ +from collections import Counter + +class Solution: + def isAnagram(self, s: str, t: str) -> bool: + if len(s) != len(t): + return False + + return Counter(s) == Counter(t) diff --git a/validate-binary-search-tree/Yiseull.java b/validate-binary-search-tree/Yiseull.java new file mode 100644 index 0000000000..40a4ce4be1 --- /dev/null +++ b/validate-binary-search-tree/Yiseull.java @@ -0,0 +1,27 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public boolean isValidBST(TreeNode root) { + return validate(root, null, null); + } + + private boolean validate(TreeNode node, Integer low, Integer high) { + if (node == null) return true; + if (low != null && low >= node.val) return false; + if (high != null && high <= node.val) return false; + return validate(node.left, low, node.val) && validate(node.right, node.val, high); + } +}