Advertisement
Guest User

Untitled

a guest
Oct 18th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.13 KB | None | 0 0
  1. // Runtime: 1 ms, faster than 92.91% of Java online submissions for Minimum Cost For Tickets.
  2. // Memory Usage: 34.8 MB, less than 100.00% of Java online submissions for Minimum Cost For Tickets.
  3. class Solution {
  4.     public int mincostTickets(int[] days, int[] costs) {
  5.         int ix = 0;
  6.        
  7.         int[] len = { 1, 7, 30 };
  8.         int[] dp = new int[366];
  9.        
  10.         dp[0] = 0;
  11.        
  12.         for (int i = 1; i <= 365 && ix < days.length; i++) {                              
  13.             if (i != days[ix]) {
  14.                 dp[i] = dp[i - 1];
  15.                 continue;        
  16.             }
  17.            
  18.             ix++;
  19.            
  20.             dp[i] = Integer.MAX_VALUE;
  21.             for (int j = 0; j < 3; j++) {
  22.                 if (ix == 0) {                  
  23.                     dp[i] = Math.min(dp[i], costs[j]);                    
  24.                 }
  25.                 else {
  26.                     int back = Math.max(0, i - len[j]);
  27.                     dp[i] = Math.min(dp[i], dp[back] + costs[j]);                    
  28.                 }
  29.             }
  30.         }
  31.        
  32.         return dp[days[ix-1]];
  33.     }
  34. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement