728x90
반응형

Java 28

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

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

728x90
반응형