[LeetCode] Grind 75 questions (6/75) Invert Binary Tree

Grind75 문제로 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 /** * 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 TreeNode invertTree(TreeNode root) { if(root == null) return root; return invert(root); } private TreeNode invert(TreeNode node) { if(node == null) return node; TreeNode temp = node.left; node.left = node.right; node.right = temp; invert(node.left); invert(node.right); return node; } }

July 1, 2024 · 김태영

[LeetCode] Grind 75 questions (2/75) Valid Parentheses

Grind75 문제로 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 class Solution { public boolean isValid(String s) { Stack<Character> stack = new Stack<>(); for(int i = 0; i < s.length(); i++) { if(s.charAt(i) == '(') { stack.push(')'); } else if (s.charAt(i) =='{') { stack.push('}'); } else if (s.charAt(i) == '[') { stack.push(']'); } else { if(stack.isEmpty()) return false; char c = stack.pop(); if(c != s.charAt(i)) return false; } } return stack.isEmpty(); } } ...

June 30, 2024 · 김태영

[LeetCode] Grind 75 questions (1/75) Two Sum

Grind75{: target="_blank"} 문제로{: target="_blank"} 0초로 푼 이들의 답이 궁금하다 풀이1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution { public int[] twoSum(int[] nums, int target) { if(nums == null || nums.length == 0) return null; for(int i = 0; i < nums.length -1; i++) { for(int j = i+1; j < nums.length; j++) { if(nums[i] + nums[j] == target){ int[] arr = {i, j}; return arr; } } } return null; } } ...

June 29, 2024 · 김태영

Grind 75 questions

layout: post title: Grind 75 questions #image: path: /assets/img/blog/jeremy-bishop@0,5x.jpg description: > sitemap: false leetcode를 매일 1문제씩 푸는게 객단가가 안나온다 느껴져서 조언을 구했다. 최빈출 75제 먼저 정복하고 빈도수별로 풀어나가라고 답변을 얻었다. 끝. ...

June 29, 2024 · 김태영

[LeetCode] 110. Balanced Binary Tree (Easy)

문제로 못풀었다. 재귀로 푸는 패턴에 익숙해져야겠다. 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 /** * 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 isBalanced(TreeNode root) { return checkHeight(root) != -1; } private int checkHeight(TreeNode node) { if (node == null) return 0; int leftHeight = checkHeight(node.left); if (leftHeight == -1) return -1; int rightHeight = checkHeight(node.right); if (rightHeight == -1) return -1; if (Math.abs(leftHeight - rightHeight) > 1) return -1; return Math.max(leftHeight, rightHeight) + 1; } }

June 27, 2024 · 김태영

[LeetCode] 108. Convert Sorted Array to Binary Search Tree (Easy)

문제로 못풀었다. 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 class Solution { public TreeNode sortedArrayToBST(int[] nums) { if(nums == null || nums.length == 0) { return null; } return convertToBST(nums, 0, nums.length -1); } public TreeNode convertToBST(int[] nums, int left, int right) { if(left > right) { // 종료됬음을 의미 return null; } int mid = left + (right - left) / 2; TreeNode node = new TreeNode(nums[mid]); node.left = convertToBST(nums, left, mid-1); node.right = convertToBST(nums, mid+1, right); return node; } } 참고 1 int mid = left + (right - left) / 2; 정수 오버플로우를 방지하기 위해서 위와 같은 방식으로 중간 인덱스를 계산한다. ...

June 26, 2024 · 김태영

친절한 SQL 튜닝

layout: post title: 친절한 SQL 튜닝 #image: path: /assets/img/blog/jeremy-bishop@0,5x.jpg description: > sitemap: false 1회독을 마칠때쯤 팀에서 신규 프로젝트의 데이터를 어떤 테이블에 적재할지 논의하는 시간이 생겼다. ‘A 테이블 인덱스 문제로 B테이블에 거래내역을 적재해야 합니다.’ ...

June 26, 2024 · 김태영

[LeetCode] 101. Symmetric Tree (Easy)

문제로 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 구현을 못해서 힌트 받고 품 /** * 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 isSymmetric(TreeNode root) { return checkSymmetric(root.left, root.right); } boolean checkSymmetric(TreeNode left, TreeNode right){ if(left == null && right != null) return false; if(right == null && left != null) return false; if(right == null && left == null) return true; if(left.val != right.val) return false; if(checkSymmetric(left.left, right.right) == false) return false; if(checkSymmetric(left.right, right.left) == false) return false; return true; } } 타인의 답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Solution { public boolean isSymmetric(TreeNode root) { if (root == null) { return true; } return isMirror(root.left, root.right); } private boolean isMirror(TreeNode node1, TreeNode node2) { if (node1 == null && node2 == null) { return true; } if (node1 == null || node2 == null) { return false; } return node1.val == node2.val && isMirror(node1.left, node2.right) && isMirror(node1.right, node2.left); } }

June 25, 2024 · 김태영

[LeetCode] 104. Maximum Depth of Binary Tree (Easy)

문제로 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 구현을 못해서 힌트 받고 품 /** * 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 int maxDepth(TreeNode root) { if(root == null) return 0; return m(root, 0); } private int m(TreeNode node, int d) { if(node == null) return d; d = d + 1; int l = m(node.left, d); int r = m(node.right, d); if(l > r) return l; else return r; } }

June 25, 2024 · 김태영

[LeetCode] 100. Same Tree (Easy)

문제로 정답 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 구현을 못해서 힌트 받고 품 /** * 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 isSameTree(TreeNode p, TreeNode q) { return test(p, q, true); } private boolean test(TreeNode p, TreeNode q, boolean b) { if( b == false) return false; if(p == null && q != null) return false; if(p != null && q == null) return false; if(p == null && q == null) return true; b = test(p.left, q.left, b); if(b == false) return false; if(p.val != q.val) return false; b = test(p.right, q.right, b); return b; } } 타인의 답 1 2 3 4 5 6 7 8 9 10 11 12 13 class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { if (p == null && q == null) { return true; } if (p != null && q != null && p.val == q.val) { return isSameTree(p.left, q.left) && isSameTree(p.right, q.right); } return false; } } 참고 1. 전위 순회 (Pre-order Traversal) 전위 순회에서는 각 노드를 방문하는 순서가 루트-왼쪽-오른쪽입니다. 즉, 먼저 루트를 방문하고, 그 다음에 왼쪽 서브트리를 방문한 후, 오른쪽 서브트리를 방문합니다. ...

June 24, 2024 · 김태영