본문 바로가기

문제풀이64

Leetcode Coin Change Java class Solution { public int coinChange(int[] coins, int amount) { int[] dp = new int[amount+1]; Arrays.fill(dp,amount+1); dp[0]=0; int total=0; if(amount==0) return 0; for(int i=0; i 2021. 1. 20.
Leetcode Count and Say Java class Solution { public String countAndSay(int n) { if (n == 1) return "1"; StringBuilder sb = new StringBuilder(); String s = countAndSay(n - 1); char value = s.charAt(0); int cnt = 0; for (int i = 0; i < s.length(); i++) { char target = s.charAt(i); if (target == value) { cnt++; continue; } sb.append(cnt).append(value); value = target; cnt = 1; } sb.append(cnt).append(value); return sb.toStrin.. 2021. 1. 20.
Leetcode MinStack JAVA 이 문제는 단순하게 생각하면 스택을 구현해서 Min 값을 구할 때 매번 O(N)의 복잡도로 값을 구하는 생각을 할 수 있다. 하지만, 그렇게 하는 방법보다 더 간단한 방법이 있다. Stack을 만들어서 더 작은 값이 나올때마다 이전의 min값을 미리 stack에 쌓아놓고 pop을 할 떄 그 다음에 있는 숫자를 min으로 업데이트 한다. 만약 pop할때 min값이 아니었다면 단순히 pop만을 한다. 이를 통해서 Min 값을 구할 떄의 시간복잡도는 O(1)로 줄어들게 된다. class MinStack { int min; Deque deque; /** initialize your data structure here. */ public MinStack() { deque = new ArrayDeque(); min.. 2021. 1. 5.
Leetcode Climbing Stairs JAVA class Solution { public int climbStairs(int n) { int[] dp = new int[n+2]; dp[1]=1; dp[2]=2; for(int i=3;i 2021. 1. 4.