每日三题-乘积最大子数组、零钱兑换、戳气球

简介: 每日三题-乘积最大子数组、零钱兑换、戳气球

乘积最大子数组


f7ad691bb0b349e988e3141fde6ee84f.png

解法一

class Solution {
    public int maxProduct(int[] nums) {
        int length = nums.length;
        int[] maxF = new int[length];
        int[] minF = new int[length];
        System.arraycopy(nums, 0, maxF, 0, length);
        System.arraycopy(nums, 0, minF, 0, length);
        for (int i = 1; i < length; ++i) {
            maxF[i] = Math.max(maxF[i - 1] * nums[i], Math.max(nums[i], minF[i - 1] * nums[i]));
            minF[i] = Math.min(minF[i - 1] * nums[i], Math.min(nums[i], maxF[i - 1] * nums[i]));
        }
        int ans = maxF[0];
        for (int i = 1; i < length; ++i) {
            ans = Math.max(ans, maxF[i]);
        }
        return ans;
    }
}


零钱兑换


705d618e2e0a4bf0b25c054a689fc3d7.png

public class Solution {
    public int coinChange(int[] coins, int amount) {
        int max = amount + 1;
        int[] dp = new int[amount + 1];
        Arrays.fill(dp, max);
        dp[0] = 0;
        for (int i = 1; i <= amount; i++) {
            for (int j = 0; j < coins.length; j++) {
                if (coins[j] <= i) {
                    dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);
                }
            }
        }
        return dp[amount] > amount ? -1 : dp[amount];
    }
}


戳气球


562d69fe9bf64128a520ccaf2a04e431.png

class Solution {
    public int maxCoins(int[] nums) {
        int n = nums.length;
        int[][] rec = new int[n + 2][n + 2];
        int[] val = new int[n + 2];
        val[0] = val[n + 1] = 1;
        for (int i = 1; i <= n; i++) {
            val[i] = nums[i - 1];
        }
        for (int i = n - 1; i >= 0; i--) {
            for (int j = i + 2; j <= n + 1; j++) {
                for (int k = i + 1; k < j; k++) {
                    int sum = val[i] * val[k] * val[j];
                    sum += rec[i][k] + rec[k][j];
                    rec[i][j] = Math.max(rec[i][j], sum);
                }
            }
        }
        return rec[0][n + 1];
    }
}
相关文章
|
5月前
【每日一题Day273】LC860柠檬水找零 | 贪心
【每日一题Day273】LC860柠檬水找零 | 贪心
17 0
【每日一题Day273】LC860柠檬水找零 | 贪心
|
4月前
leetcode-419:甲板上的战舰
leetcode-419:甲板上的战舰
19 0
|
4月前
|
Java
leetcode-860:柠檬水找零
leetcode-860:柠檬水找零
26 0
|
5月前
|
存储 算法 程序员
【算法训练-动态规划 一】【应用DP问题】零钱兑换、爬楼梯、买卖股票的最佳时机I、打家劫舍
【算法训练-动态规划 一】【应用DP问题】零钱兑换、爬楼梯、买卖股票的最佳时机I、打家劫舍
66 0
|
9月前
|
算法
算法练习Day44|70. 爬楼梯 (进阶)● 322. 零钱兑换 ● 279.完全平方数
算法练习Day44|70. 爬楼梯 (进阶)● 322. 零钱兑换 ● 279.完全平方数
|
11月前
蓝桥杯:二分法求分巧克力
蓝桥杯:二分法求分巧克力
46 0
leetcode 860柠檬水找零
leetcode 860柠檬水找零
47 0
leetcode 860柠檬水找零
|
大数据 网络架构 索引
Leecode134加油站打卡
Leecode134加油站打卡
69 0
Leecode134加油站打卡
每日三题-打家劫舍、打家劫舍III、最佳买卖股票时机含冷冻期
每日三题-打家劫舍、打家劫舍III、最佳买卖股票时机含冷冻期
57 0
每日三题-打家劫舍、打家劫舍III、最佳买卖股票时机含冷冻期
|
人工智能 BI
L3-001 凑零钱 (30 分)
L3-001 凑零钱 (30 分)
114 0