写点什么

动态规划

0 人感兴趣 · 61 次引用

  • 最新
  • 推荐
https://static001.geekbang.org/infoq/d9/d9793bdda1123725a2d149abb2d48fe1.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

05. 机器学习入门 1 - 动态规划

用户头像
茶桁
10-08

咱们之前的课程就给大家讲了什么是人工智能,也说了每个人的定义都不太一样。关于人工智能的不同观点和方法,其实是一个很复杂的领域,我们无法用一个或者两个概念确定什么是人工智能,无法具体化。

ARTS 打卡 第三周

A:62. 不同路径 R: GenAI 十大热门技能 T: Pandas解析Json S:工作强度太大了,我哪里还有时间健身,锻炼?

动态规划 - 编辑距离 - 两字符串集合重排序

  近期遇到一个需求,想要对两个字符串集合进行重排序(对齐)操作,将两个字符串集合中尽可能相同的字符串存放到相同的位置上。

https://static001.geekbang.org/infoq/33/338e9d35b8688fc64ee365c8990e9f4a.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

LCR 089. 打家劫舍

动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。20世纪50年代初,美国数学家贝尔曼(R.Bellman)等人在研究多阶段决策过程的优化问题时,提出了著名的最优化原理,从而创立了动态规划。

https://static001.geekbang.org/infoq/96/9669513253427bf55f93fff701d12841.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

javaScript 实现动态规划 (Dynamic Programming)01 背包问题

动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。

https://static001.geekbang.org/infoq/e2/e2bb21c09d251b4a11c7e128ffe1a3df.webp?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

智能的支柱:算法

用户头像
TiAmo
05-22

我们所了解的人工智能,是像 ChatGPT 那样能够在世界范围叱咤风云的角色,是能够在 千万张人脸中一眼就能认出你的图像识别软件,是能够在道路上驰骋并将我们安全送到目的地的自动驾驶汽车……

细胞分裂问题的原创解法

Leetcode细胞分裂问题的原创解法,递归、动态规划

https://static001.geekbang.org/infoq/5b/5bd3d28b69f5993ddef3226cd05e75db.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

【牛客刷题 - 算法】NC7 买卖股票的最好时机 (一)

用户头像
清风莫追
2022-10-03

描述假设你有一个数组prices,长度为n,其中prices[i]是股票在第i天的价格,请根据这个价格数组,返回买卖股票能获得的最大收益 你可以买入一次股票和卖出一次股票,并非每天都可以买入或卖出一次,总共只能买入和卖出一次,且买入必须在卖出的前面的某一天

https://static001.geekbang.org/infoq/f3/f3466cb572423a36a0f943602a9c9593.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

头脑风暴:打家劫舍 2

你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。

https://static001.geekbang.org/infoq/c0/c066f9ac83f0cba931d5fde007279128.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 312. Burst Balloons 戳气球 (困难)

用户头像
okokabcd
2022-07-10

分治+动态规划,dp[i][j] = maxCoins(nums[i]~nums[j]) 表示从第i个气球到第j个气球的最大值,我们所求答案就是ans = dp[1][n]。

https://static001.geekbang.org/infoq/1e/1edae0c9fc3dd3a82fad8823e5a3ba65.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 53. Maximum Subarray 最大子数组和 (中等)

用户头像
okokabcd
2022-07-06

定义一个max保存遍历过程中出现的最大子数组和,也是返回结果,定义一个dp[i],用来表示以第i个元素为结尾的数组的最大数组和。

https://static001.geekbang.org/infoq/0a/0a38b55a085242eea7432829cf0f1804.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 10. Regular Expression Matching 正则表达式匹配 (困难)

用户头像
okokabcd
2022-07-05

定义一个二维数组dp,其中dp[i][j]表示字符串s的子串s[0, i]是否可以被字符串p的子串p[0,j]匹配,根据正则表达式的不同情况,即星号、点号、非星号点号的字符,我们可以分情况讨论来更新dp数组。

https://static001.geekbang.org/infoq/31/313f1b744040d77224196fdb4737b3d0.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 72. Edit Distance 编辑距离 (中等)

用户头像
okokabcd
2022-07-04

使用一个二维数组dp[i][j],表示将第一个字符串到位置i为止,和第二个字符串到位置j为止,最多需要几步编辑。

https://static001.geekbang.org/infoq/88/887a970e9a89359a2ebee7f1687272d8.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 121 Best Time to Buy and Sell Stock 买卖股票的最佳时机 (简单)

用户头像
okokabcd
2022-07-03

遍历一次数组,在每个位置i时,记录i位置之前所有价格中的最低价格,然后将当前价格作为售出价格,查看当前收益是不是最大收益即可。

https://static001.geekbang.org/infoq/23/23d8c632fed491474fb0a437f0baebe9.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 650. 2 Keys Keyboard 只有两个键的键盘 (中等)

用户头像
okokabcd
2022-07-02

还是动态规划,这里需要乘除法来计算位置,因为粘贴操作是位数增加的。我们使用一个一维数组dp,其中位置i表示延展到长度i的最少操作次数。

https://static001.geekbang.org/infoq/29/290091180ab73ba68f3f986e5c0bb36a.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 322. Coin Change 零钱兑换 (中等)

用户头像
okokabcd
2022-07-01

每个硬币可以用无限多次,所以是完全背包问题。dp[i]表示,达到总金额i所需的最少硬币数,因为求最少硬币数所以先将dp初始化为amount+2,状态转移方程为:dp[i] = min(dp[i], dp[i-coin] + 1)

https://static001.geekbang.org/infoq/0a/0a0cf1dd00bfebac76f90a045e88ddd7.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 474. Ones and Zeroes 一和零 (中等)

用户头像
okokabcd
2022-06-30

这道题也是一个背包问题,背包问题:有N个物品和容量为W的背包,每个物品都有自己的体积w和价值v,求拿哪些物品可以使得背包所装下物品的总价值最大。如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题;

https://static001.geekbang.org/infoq/8a/8af2fc6fbbcde496ea8548f98ac59e3b.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 416. Partition Equal Subset Sum 分割等和子集 (中等)

用户头像
okokabcd
2022-06-29

设所有数字和为sum,我们的目标是选取一个子数组,使它的总和为sum/2,定义二维boolean数组dp[i][j],其意义是使用前i个数字的和能不能构成整数j。

https://static001.geekbang.org/infoq/a3/a3b06ab2621b9709696de3d21baa5426.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 1143. Longest Commom Subsequence 最长公共子序列 (中等)

用户头像
okokabcd
2022-06-26

使用动态规划来解决本题,定义一个二维数组dp,其中dp[i][j]表示到第一个字符串位置i为止、到第二个字符串位置j为止、最长的公共子序列长度。这样一来我们就可以很方便地分情况讨论这两个位置对应的字母相同中与不同的情况了。

https://static001.geekbang.org/infoq/b5/b50ea2c1f59159d0a4ce9fd5b352c324.webp?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 300. Longest Increasing Subsequence 最长递增子序列 (中等)

用户头像
okokabcd
2022-06-25

核心思想是使用一个数组dp来保存,dp[i]的意义是到该位置为止的最长递增子序列。最后求所有位置的最大值,而不是dp的最后元素。

https://static001.geekbang.org/infoq/75/75872b6eab5cbdd296363c2a62633943.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 139. Word Break 单词拆分 (中等)

用户头像
okokabcd
2022-06-24

这道题的分割条件由集合内的字符串决定,因此在考虑每个分割位置时,需要遍历字符串集合,以确定当前位置是否可以成功分割,注意对于位置0,需要初始化值为真。

https://static001.geekbang.org/infoq/89/89a85a94187e64982c971e6dac53d5c1.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 91. Decode Ways 解码方法 (中等)

用户头像
okokabcd
2022-06-22

这个题目和爬楼梯的题目非常像,直接使用dp。

https://static001.geekbang.org/infoq/dd/ddf7ac2db13e7360839e84ce4b4dcc68.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 279. Perfect Squares 完全平方数 (中等)

用户头像
okokabcd
2022-06-21

动态规划,dp[i]表示i有几个完全平方数的加和构成,枚举比i小的完全平方数,状态转移方程为dp[i] = min(dp[i-k] + 1) ,k就是完全平方数

https://static001.geekbang.org/infoq/ba/ba55c1a3ebe5b911cfc9d93114051cf6.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 221. Maximal Square 最大正方形 (中等)

用户头像
okokabcd
2022-06-20

使用动态规划来解决,使用dp[i][j]表示以(i,j)为右下角,且只饮食1的正方形的边长最大值。如果我们能计算出所有dp[i][j]的值,那么其中的最大值即为矩阵中只饮食1的下方形的边长最大值,其平方即为最大下方形的面积。

https://static001.geekbang.org/infoq/b5/b50ea2c1f59159d0a4ce9fd5b352c324.webp?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 542. 01 Matrix 01 矩阵 (中等)

用户头像
okokabcd
2022-06-19

判断使用动态规划思路解决问题,先定义一个数组dp[][]来,找到状态转移方程式。本题需要从左上开始搜索一次,右下开始搜索一次。

https://static001.geekbang.org/infoq/b5/b50ea2c1f59159d0a4ce9fd5b352c324.webp?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 64. Minimum Path Sum 最小路径和 (中等)

用户头像
okokabcd
2022-06-18

二维的动态规则,定义一个二维dp数组,其中dp[i][j]表示从左上角开始到(i, j)位置的最优路径的数字和。因为每次只能向下或者向右移动,我们可以得到状态转移方程dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]。

https://static001.geekbang.org/infoq/b5/b50ea2c1f59159d0a4ce9fd5b352c324.webp?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

leetcode 198. House Robber 打家劫舍 (中等)

用户头像
okokabcd
2022-06-16

动态规划,找到状态转移方程就解决了一半了

https://static001.geekbang.org/infoq/fd/fd78986cbc71f43d24a15af98e526b0b.png?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

【动态规划入门篇】只需三步解决它

用户头像
知心宝贝
2022-06-02

做动态规划需要几步,就像冰箱装大象一样,分成三步: 第一步:含义搞懂 第二步:变量初始 第三步:关系归纳 本文通过3篇动态规划文章成功入门动态规划

https://static001.geekbang.org/infoq/d6/d6d09ac973054781a117d5700aa1633b.jpeg?x-oss-process=image%2Fresize%2Cw_416%2Ch_234

算法: 动态规划 - 斐波那契数列问题

用户头像
正向成长
2022-05-04

LeetCode 509:斐波那契数 (通常用 F(n) 表示)形成的序列称为斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给定 n ,请计算 F(n) 该问题。

动态规划_动态规划技术文章_InfoQ写作社区