728x90
반응형

ALGORITHM 33

[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 :..

[JAVA][LeetCode] #217. Contains Duplicate | easy | HashMap | HashSet | Insertion sort

문제 / 예시 / 제한조건 겹치는 항목이 있는지 체크하는 방법 HashMap 을 이용class Solution { public boolean containsDuplicate(int[] nums) { HashMap map = new HashMap(); for(int num : nums) { if(map.containsKey(num)) return true; else map.put(num, true); } return false; }} 이렇게 풀었당Time Complexity : O(n)Space Complexity : O(n) 근데 Hash..

[JAVA][LeetCode][SlidingWindow|DP] #123. Best Time to Buy and Sell Stock III

문제 / 예시 / 제한조건 처음에 보고는 간단하게 생각했음. 122번 문제 푼 것에서 transcation 이 발생 할 때마다, 배열에 저장하고 가장 큰 수 2개를 뽑아서 더하면 되는 문제라고 생각함 예를 들어, 1 1 2 4 2 5 7 2 4 9 0 이렇게 있으면 buy 1 -> sell 4 : profit = 3 buy 2 -> sell 7 : profit = 5 buy 2 -> sell 9 : profit = 7 가 되고 가장 큰 두 수 7,5 를 더해서 12가 된다고 생각함. class Solution { public int maxProfit(int[] prices) { if(prices.length prices[sellTime + 1]) { savedProfit[savingIndex] = pri..

[JAVA][LeetCode][SlidingWindow] #122. Best Time to Buy and Sell Stock II

문제 / 예시 / 제한조건 : 지난 번 문제에서 조오금 발전한 문제! 여러번 사고 팔 수 있고, 제일 큰 합을 리턴하면 되는 문제. 여러가지 예시를 해본 결과 - sell 하는 경우 : 현재의 가격이 다음날의 가격보다 비쌀 경우. -> 다음날에 다시 buy 하면 됨. : 끝까지 다 확인 했을 경우. 7 1 5 3 6 4 를 예로 든다면, ---- buy : 7 sell : 1 - sell(1) buy = sell (1) / sell = buy + 1 (5) ---- buy : 1 sell : 5 - sell(5) > buy(1) - Profit = sell(5) - buy(1) = 4 - check next sell : nextSell(3) buy = curre..

[JAVA][LeetCode][SlidingWindow] #121. Best Time to Buy and Sell Stock

문제 / 예시 / 제한조건 : (정답은 맨 아래) 지금까지 슬라이딩 윈도우 문제 풀었을 때는 left, right 로 양 끝에 인덱스 두고 하는 것만 했었어서, 생각이 그 안에 갇혀있었다. 그래서 진짜.. 삽질을 많이 한 느낌! 나의 삽질.. 실패 : TRY #1 (94 / 212 testcases passed) 맨 앞을 buyTime으로 설정하고, 맨 뒤를 sellTime으로 설정해서 접근 앞서 말한 것과 같이... 생각이 진짜 갇혀있었음 int maxProfit = 0; int buyTime = 0, sellTime = prices.length - 1; while(sellTime > buyTime ) { int currentProfit = prices[sellTime] - prices[buyTime]..

[Java][Leetcode][BST] 501. Find Mode in Binary Search Tree

문제 : 예시 : 제한 조건 : WAY 1: BST방문해서 모든 수/카운트 횟수를 MAP에 저장하고, 후에 그 MAP에 있는 데이터 기반으로 최대 횟수 숫자 뽑으면 되겠다. 생각함 class Solution { Map map = new HashMap(); public int[] findMode(TreeNode root) { checkTree(root); int maxCount = 0; ArrayList resultArray = new ArrayList(); for(int key: map.keySet()) { if(maxCount < map.get(key)) { maxCount = map.get(key); resultArray.clear(); resultArray.add(key); } else if(max..

[JAVA][LeetCode][BST] #98. Validate Binary Search Tree

문제 : 예시 : 제한 조건 : 시도1 : 처음에는 부모랑만 비교하면 된다고 생각했다. 그래서 간단히 정리해본 수도코드와 실제 코드 class Solution { public static final int LEFT = 0; public static final int RIGHT = 1; public boolean isValidBST(TreeNode root) { return checkValid(root.left, root.val, LEFT) && checkValid(root.right, root.val, RIGHT); } private boolean checkValid(TreeNode node, int parentValue, int side) { if(node == null) return true; // ..

[LeetCode][Java] 111. Minimum Depth of Binary Tree

이번엔 진짜 혼자 풀었다!! 이제 recursive 알고리즘의 개미 발톱은 보이는 것 같다.! 문제 이번 문제는 root의 자식 노드 중 leaf 노드를 찾는 것! 여기서 leaf 노드란 ? 자식이 없는 노드를 뜻함.! 여기서 약간의 함정이 있다고 보는데,,.. 내가 생각하는 함정은 root의 자식이 없을 경우이다. 이것때문에.. 힘들었즤.. 하하 나의 오답 창피하지만.. 내 오답을 적어놔야 나중에 실수를 안하니깐! /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = v..

[LeetCode][Java] 110. Balanced Binary Tree

문제에 대한 오해가 있어서.. 역대급으로 틀려버렸다.. 역시 오해는 금물!! 문제 left와 right 높이 차이가 1보다 크게 나면 false, 아니면 true를 return 하는 문제! 근데 나는 여기서 root의 left , right 로 생각하면 되는 줄 알고.. 계속 root의 왼쪽과 오른쪽의 최대 높이를 구하고 그 두 개를 비교했다.. 나의 오답 /** * 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..

728x90
반응형