import java.util.* ; import java.io.*; public class Solution { public static int frogJump(int n, int heights[]) { // return s(heights , n-1 , new Integer[n]); int[] dp = new int[n]; dp[0] = 0; for(int i= 1 ;i < n ;i++){ int one = Integer.MAX_VALUE , two = Integer.MAX_VALUE; if(i-1 >= 0) one = Math.abs(heights[i] - heights[i-1]) + dp[i-1]; if(i-2 >= 0) two = Math.abs(heights[i] - heights[i-2]) + dp[i-2]; dp[i] = Math.min(one , two); } return dp[n-1]; } public static int s(int heights[], int n , Integer[] dp){ if(n == 0) return 0; if(dp[n] != null) return dp[n]; int one = Integer.MAX_VALUE , two = Integer.MAX_VALUE; if(n-1 >= 0) one = Math.abs(heights[n] - heights[n-1]) + s(heights , n-1 , dp); if(n-2 >= 0) two = Math.abs(heights[n] - heights[n-2]) + s(heights , n-2 , dp); return dp[n] = Math.min(one , two); } }