动态规划part 06

LC 279.完全平方数

思路跟LC 322 零钱兑换那道题如出一辙,将n理解为背包容量,完全平方数理解为物品即可。

python 复制代码
class Solution:
    def numSquares(self, n: int) -> int:
        dp = [float('inf')] * (n + 1)
        dp[0] = 0
        i = 1
        while i*i <= n:
            for j in range(i*i , n + 1):
                dp[j] = min(dp[j - i*i] + 1 , dp[j])
            i += 1
        return dp[n]

JAVA版本

java 复制代码
class Solution {
    public int numSquares(int n) {
        int[] dp = new int [n+1];
        for(int i = 1 ; i < dp.length ; i ++ ){
            dp[i] = Integer.MAX_VALUE;
        }
        for(int i = 1 ; i*i <= n ; i++){
            for(int j = i*i ; j <= n ; j ++){
                dp[j] = Math.min(dp[j - i*i] + 1 , dp[j]);
            }
        }
        return dp[n];
    }
}

和LC 322 的一个小区别在于,本题不需要判断"if dp[j - i*i] == Integr.max",因为本题是一定能凑成的,1可以凑成所有数字。

LC 139.单词拆分

python 复制代码
class Solution:
    def wordBreak(self, s: str, wordDict: List[str]) -> bool:
        dp = [False] * (len(s) + 1 )
        dp[0] = True
        for i in range(len(s) + 1):
            for j in range(i):
                word = s[j : i]
                if dp[j] == True and word in wordDict:
                    dp[i] = True
                    break
        return dp[len(s)]

是真难想,换一个题,dp数组的含义和递推公式就不会了。。。。

本题中,dp[ i ]的含义是,长度为 i 的字符串,是否能被字典里的单词构成 。

递推公式: 假设 s = "applepen" ,dp[s.length]就代表s能否被字典里的单词构成,它的结果依赖于子字符串(比如apple),apple得能被字典里的单词构成,并且,子字符串到当前字符串之间的字符串,也是出现在字典中,

相关推荐
.格子衫.2 小时前
022数据结构之树状数组——算法备赛
数据结构·算法·1024程序员节
黑科技Python2 小时前
生活中的“小智慧”——认识算法
学习·算法·生活
sali-tec3 小时前
C# 基于halcon的视觉工作流-章52-生成标定板
开发语言·图像处理·人工智能·算法·计算机视觉
IT古董3 小时前
【第五章:计算机视觉-项目实战之推荐/广告系统】2.粗排算法-(4)粗排算法模型多目标算法(Multi Task Learning)及目标融合
人工智能·算法·1024程序员节
熬了夜的程序员3 小时前
【LeetCode】89. 格雷编码
算法·leetcode·链表·职场和发展·矩阵
對玛祷至昏4 小时前
数据结构理论知识
数据结构·算法·排序算法
oliveira-time4 小时前
二分搜索(Binary Search)
算法
王哈哈^_^5 小时前
【数据集】【YOLO】【目标检测】口罩数据集,口罩佩戴识别数据集 1971 张,YOLO佩戴口罩检测算法实战训练教程。
人工智能·算法·yolo·目标检测·计算机视觉·ai·视觉检测
dragoooon345 小时前
[优选算法专题四.前缀和——NO.31~32 连续数组、矩阵区域和]
数据结构·算法·leetcode·1024程序员节
py有趣5 小时前
LeetCode算法学习之移除元素
java·数据结构·算法