Advertisement
blwrvksrblv

375. Guess Number Higher or Lower II

Feb 18th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.88 KB | None | 0 0
  1. // https://leetcode.com/problems/guess-number-higher-or-lower-ii/discuss/84764/Simple-DP-solution-with-explanation~~
  2. // Time: O(n3), Space: O(n2)
  3. // See solution for explaintaion on the k=(i+j)/2 setiing
  4. // Also, see submission most fast solution for best recrusive solution
  5. class Solution {
  6.     public int getMoneyAmount(int n) {
  7.         if (n <= 1) {
  8.             return 0;
  9.         }
  10.        
  11.         int[][] dp = new int[n+1][n+1];
  12.         for (int l=2; l<=n; l++) {
  13.             for (int i=1; i+l-1<=n; i++) {
  14.                 int j = i+l-1;
  15.                 dp[i][j] = Integer.MAX_VALUE;
  16.                 for (int k=(i+j)/2; k<=j; k++) {
  17.                     int tmp = k + Math.max(k-1 >= i ? dp[i][k-1] : 0, k+1 <= j ? dp[k+1][j] : 0);
  18.                     dp[i][j] = Math.min(dp[i][j], tmp);
  19.                 }
  20.             }
  21.         }
  22.        
  23.         return dp[1][n];
  24.     }
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement