728x90
반응형

leetcode 21

[JAVA][LeetCode][Blind75] 235. Lowest Common Ancestor of a Binary Search Tree | BST | Recursion | Medium

문제 / 예제 / 제한조건 : p와 q 사이에 있는 Value를 가진 노드 중 가장 위에 있는 노드를 구하는 문제! 예전에는 Easy였는데, Medium 으로 바뀐듯?  # 풀이1. p와 q 범위 안에 들었다면 -> 리턴2. 범위 안에 들지 않았다면   -> 노드 왼쪽 확인 후 값이 null이라면   -> 노드 오른쪽 확인 후 값 리턴/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode lowestCo..

[Java][LeetCode][Blind75] 572. Subtree of Another Tree | Easy | Tree | Recursion

문제 / 예제 / 제한조건 :node 에 subNode가 포함되어 있는지 판단하는 문제. # 풀이1. 두 노드가 null 인지 확인 -> True2. 두 노드 중 한 노드만 null -> False3. 두 노드의 값이 같으면 -> 같은 노드인지 확인 (isSameTree 문제해서 사용했던 함수를 사용하면 된다 - https://codingstorywithme.tistory.com/88)4. 두 노드의 값이 다르면 -> 노드의 좌/우 로 이동해 같은 값을 찾아나가면 된다./** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tr..

[Java][LeetCode][Blind75] 226. Invert Binary Tree | Easy | Tree | Recursion

문제 / 예제 / 제한조건 :  풀이내가 생각한 리커전을 끝내는 조건은 1. 현재 노드가  null인 경우 -> 끝2. 현재 노드의 좌/우 가 모두 null인 경우 -> 끝 이 두조건에 해당하지 않는 경우1. 현재 노드의 좌/우 를 바꿔준다 2. 현재 노드의 좌/우 로 현재 노드를 변경하여 리커전 코드로 확인해보면/** * 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 ..

[Java][LeetCode][Blind75] 100. Same Tree | Easy | Tree | Recursion

문제 / 예시 / 제한조건 : 이것도 예전에 풀었던 문제 ㅋㅋ # 풀이 1생각해봐야하는 조건1. 두 노드가 null 인 경우 -> 같음 (true)2. 두 노드 중 하나의 노드만 null 인 경우 -> 다름 (false)3. 두 노드의 값이 다른 경우 -> 다름 (false)4. 두 노드의 값이 같은 경우 -> 같음 (true) 이렇게 4가지 조건/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode..

[Java][LeetCode][Blind75] 104. Maximum Depth of Binary Tree | EASY | Recursion

오랜만에 트리 문제 풀기! +ㅁ+ 문제 / 예제 / 제한조건 :알고보니 예전에도 푼 적이 있던 문제였다!예전이랑 비슷하지만 다른 방식으로 풀어서 보는 재미가 있는 느낌쓰~ # 풀이 1Solution에서 주는 함수 외에 count를 인자로 갖는 새로운 함수를 생성해서 해당 함수로 계산하는 방식node가 null 이 될 때까지 count + 1 를 해주면서 깊이를 세준다.노드에는 왼쪽 오른쪽이 있는데, 둘 중에 깊이가 더 깊은 수로 count를 해줘야 하기 때문에 Math.max 를 사용/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; ..

[Java][LeetCode] #2932. Maximum Strong Pair XOR I | O(nlogn) | O(n^2)

문제 / 예시 : 제한 조건 : 보자마자 복잡하다고 생각했지만!풀어서 써보니 많이 복잡하진 않았다. 풀이 #1내가 생각한 방법은Array 를 정렬시키고, 같은 숫자 (같은 위치) 면 위의 조건에 무조건 통과하니, 투 포인트를 둬서 같은 위치에서 시작 하나씩 이동하면서 비교하는 것 이다. 예시로 보면,12345Left Right    이 위치에서 시작12345Left Right   nums[right] - nums[left] => nums[left]  에 해당 할 경우, XOR 값을 계산해주고 Right를 다음으로 넘기면 된다. 근데12345Left  Right  이 경우, nums[right] - nums[left] => nums[left] 에 해당하지 않아서 Left를 다음으로 이동시키고, Right도..

[Java][LeetCode] #1641. Count Sorted Vowel String | O(n)

내가 너무나 약한 DP에서 랜덤으로 풀어보았다.근데 DP로 푼지 아닌지 모르겠음 문제 / 예제 / 제한조건 풀이 패턴을 찾느라고 거의 1시간은 쓴 것 같다.뇌가 잘 안돌아가서 나는 직접 다 적어봐야 패턴을 찾을 수 있다..뭐 경험이 부족한 탓이겠지!? 그렇게해서 찾은 패턴! n = 1 일 때 각자 개수는AEIOU11111 n = 2 일 때, 각각의 개수는AEIOU54321 n = 3 일 때, 각각의 개수는AEIOU1510631 이렇게 구성되어 있다. 규칙이 보인다 +_+바로바로AEIOUn=2 일때의 A + E + I + O + Un=2 일때의 E + I + O + Un=2 일때의  I + O + Un=2 일때의  O + Un=2 일때의  U1510631 그렇게 구현해보면~class Solution { ..

[Java][LeetCode] #152. Maximum Product Subarray | O(n) | O(n^2)

문제 / 예제 / 제한 조건 :  이번 문제도 보자마자는 엄청 쉬워보였는데, 생각보다 어려웠다. 딱 떠올렸을 때, 모든 케이스를 계산하는 방법 외에 다른 방법이 떠오르지 않았다..통과하는지 보기 위해서 일단 풀어봄 풀이 #1for문 2개를 써서 모든 경우의 수를 다 계산하고 곱해주는 것.class Solution { public int maxProduct(int[] nums) { int maximumNum = nums[0]; for (int i = 0; i Time Complexity : O(n^2)Space Complexity : O(1)이건 너무 꼴찌잖아..(இ﹏இ`。) 다른 방법을 머릿속으로 계속계속 생각했는데, 전혀~ 모르겠어서 검색 찬쓰 유튜브 3개를 정도 보고, ..

[JAVA][LeetCode] #238. Product of Array Except Self | Arrays | Medium |

문제 / 예제 / 제한 조건 : 처음에 문제 보자마자 엄청 쉬워보였다.# 풀이 1내가 생각했던 방식은 [1,2,3,4] 가 있다면이 값을 모두 곱해둔 값을 하나 가지고 있고 -> 24result를 저장 할 때, nums[i]로 나누어서 저장하면 된다고 생각했다.class Solution { public int[] productExceptSelf(int[] nums) { int[] results = new int[nums.length]; int allMultipleValue = 1; for (int num : nums) { allMultipleValue *= num; } for (int i = 0; i Time comp..

[JAVA][LeetCode] #219. Contains Duplicate II

문제 / 예제 / 제한조건 : 겹치는 수의 인덱스 차이가 k보다 적게 나는 것이 1개라도 있으면 true! 매우매우 기분 좋게 한 번에 아주 좋은 결과로 통과해부렀지〰️ 해결방법나는 map에 num값을 key로 Index 값을 value로 저장해두고,같은 num값이 있을 경우, index 값을 비교해서 k 보다 크면 더 큰 (최신)  index 값을 저장하여 index 값을 업데이트 해주는 식으로 하였다.class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { HashMap map = new HashMap(); for(int i=0; iTime Complexity :..

728x90
반응형