diff --git a/3sum/ymir0804.java b/3sum/ymir0804.java new file mode 100644 index 000000000..240420d67 --- /dev/null +++ b/3sum/ymir0804.java @@ -0,0 +1,39 @@ +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +class Solution { + public List> threeSum(int[] nums) { + List> answer = new ArrayList<>(); + Arrays.sort(nums); + int sum = 0; + + for (int i = 0; i < nums.length-2; i++) { + int left = i + 1; + int right = nums.length -1; + if(i > 0 && nums[i-1] == nums[i]) { + continue; + } + while (left < right ) { + sum = nums[i] + nums[left] + nums[right]; + if(sum > 0) { + right--; + } else if(sum < 0 ) { + left++; + } else { + answer.add(Arrays.asList(nums[i], nums[left], nums[right])); + while (left < right && nums[left] == nums[left + 1]) { + left++; + } + while (left < right && nums[right] == nums[right - 1]) { + right--; + } + left++; + right--; + } + } + + } + return answer; + } +} diff --git a/validate-binary-search-tree/ymir0804.java b/validate-binary-search-tree/ymir0804.java new file mode 100644 index 000000000..18d46167a --- /dev/null +++ b/validate-binary-search-tree/ymir0804.java @@ -0,0 +1,16 @@ +class Solution { + public boolean isValidBST(TreeNode root) { + return isValid(root, Long.MIN_VALUE, Long.MAX_VALUE); + } + public boolean isValid(TreeNode node, long min, long max) { + if (node == null) { + return true; + } + if (node.val <= min || node.val >= max) { + return false; + } + return isValid(node.left, min, node.val) && isValid(node.right, node.val, max); + } + +} +