Google - Find minimum number of coins that make a given value
Posted incrediblechangshuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google - Find minimum number of coins that make a given value相关的知识,希望对你有一定的参考价值。
Given a value V, if we want to make change for V cents, and we have infinite supply of each of C = { C1, C2, .. , Cm} valued coins, what is the minimum number of coins to make the change? Examples: Input: coins[] = {25, 10, 5}, V = 30 Output: Minimum 2 coins required We can use one coin of 25 cents and one of 5 cents Input: coins[] = {9, 6, 5, 1}, V = 11 Output: Minimum 2 coins required We can use one coin of 6 cents and 1 coin of 5 cents
// "static void main" must be defined in a public class. public class Main { public static void main(String[] args) { int[] coins = {1,3,5}; System.out.println(new Solution().minCoinChangeRecursiveWithMemo(coins, 3, 50)); System.out.println(new Solution().minCoinChangeDP(coins, 3, 50)); } } class Solution { public int minCoinChangeRecursiveWithMemo(int[] coins, int m, int v){ HashMap<Integer, Integer> map = new HashMap<>(); return helper(coins, m, v, map); } public int helper(int[] coins, int m, int v, HashMap<Integer, Integer> map){ if(v == 0){ return 0; } if(map.containsKey(v)){ return map.get(v); } int min = Integer.MAX_VALUE; for(int i = 0; i < m; i++){ if(coins[i] <= v){ int sub_res = helper(coins, m, v-coins[i], map); if(sub_res != Integer.MAX_VALUE && sub_res + 1 < min){ min = sub_res+1; } } } map.put(v, min); return min; } public int minCoinChangeDP (int[] coins, int m, int v){ int[] dp = new int[v+1]; dp[0] = 0; for(int i= 1; i <= v; i++){ dp[i] = Integer.MAX_VALUE; for(int j = 0; j < m; j++){ if(coins[j] <= i){ if(dp[i - coins[j]] + 1 < dp[i]) { dp[i] = dp[i - coins[j]] + 1; } } } } return dp[v]; } }
以上是关于Google - Find minimum number of coins that make a given value的主要内容,如果未能解决你的问题,请参考以下文章
153. Find Minimum in Rotated Sorted Array
LeetCode 153. Find Minimum in Rotated Sorted Array
Find Minimum in Rotated Sorted Array leetcode
154. Find Minimum in Rotated Sorted Array II