LEETCode 21일간의 동적 프로그래밍
최소 낙하 경로
해시맵 사용
10일차
Airtmetic 슬라이스
Logic and other Solution: LeetCode
package Day10;
import java.util.Scanner;
public class AirthmeticSlice {
public static int numberOfArithmeticSlices(int[] nums) {
int[] DP= new int[nums.length];
int count=0;
for(int i=2; i<nums.length; i++){
int diff=nums[i]-nums[i-1];
if(diff==nums[i-1]- nums[i-2]){
//previous series grown +1 new ap
DP[i]=DP[i-1]+1;
count=DP[i]+count;
} ;
}
return count;
}
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
System.out.println("Enter the length of your array");
int n= sc.nextInt();
int[] nums= new int[n];
for(int i=0; i<n; ++i){
nums[i]=sc.nextInt();
sc.close();
}
System.out.println(numberOfArithmeticSlices(nums));
}
}
디코드 방법:
LeetCode Solution :
우리는 subString Intger.Parseint(s.substring(i-1, i+1)을 사용할 수 있습니다. i-1에서 i+1까지 주목해야 할 지점은 i-1과 1의 범위를 포함합니다. 예:(2,5 )-> 2,3,4
5일차
4일차
public class jumpGame {
//I will store my maximum value in Dp array and compare the current maximum dp[i] to
//the previous maximum Dp[i-1], so the currrent maximum or the maximum value will depend on the value of dp[i-1], so we can store dp[i-1] in variable MaxJump
//maxJump= Math.max(maxJump, nums[i]+i);
public static boolean canJump(int[] nums) {
if (nums.length==1) return true;
int[] dp = new int[nums.length];
dp[0] = nums[0];
for(int i = 1; i < nums.length; i++){
if(dp[i - 1] < i){
return false;
}
//if my capcity to jump is smaller than to capacity to reach last index,i, then we will return false
dp[i] = Math.max(dp[i - 1], i + nums[i]);
//maxJump= Math.max(maxJump, i+nums[i]);
//whether we can reach to end index or not from current: i+nums[i]
}
return true;
}
public static void main(String[] args ){
int[] nums= {2,1,4,3,0,1};
System.out.println(canJump(nums));
}
}
3일차
2일차:
1일차
문제 1: 피보나치 수열
class Solution {
public int fib(int n) {
if(n==0 || n==1) return n;
int[] dp = new int[n+1];
dp[0]=0;
dp[1] =1;
for(int i=2;i<=n;i++){
dp[i] = dp[i-1]+dp[i-2];
}
return dp[n];
}
}
문제 2: n번째 트리보나치 시리즈
class Solution {
public int tribonacci(int n) {
if(n==0 ){
return 0;
}
else if(n==1 || n==2){
return 1;
}
int dp[]= new int[n+1];
dp[0]=0;
dp[1]=1;
dp[2]=1;
for(int i =3;i<=n;i++){
dp[i] = dp[i-1]+dp[i-2]+dp[i-3];
}
return dp[n];
Reference
이 문제에 관하여(LEETCode 21일간의 동적 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/swapnil_xi/leet-code-21-days-of-dynamic-programming-1g67텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)