自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 题解: 我们用dp[i][j]表示机器人走到[i][j]位置的路径个数。 那么有如下递推公式: dp[i][j] = dp[i][j-1]+dp[i-1][j] 考虑边界场景: dp[0][0,1,2,3,4,…n] = 1; dp[0,1,2,3,4…n][0] = 1; public in

2020-06-21 16:32:44 165

原创 最长回文字串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 题解: Boolean dp[i][j] 表示从i到j的字串是否为回文。有如下递推公式: dp[i][j] = dp[i+1][j-1] && n[i] == n[j] 其中n[i]表示字符串的第i个字符。 对于边界条件,有如下成立: dp[i][i] = true; dp[i][i+1] = n[i]==n[i+1]; 因此我们可以从i开始循环,每次判断i+1,i+2,i+3…是否为回文串,依次类推找

2020-06-21 15:59:08 77

原创 买入股票的最低价钱

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票一次),设计一个算法来计算你所能获取的最大利润。 注意:你不能在买入股票前卖出股票。 动态规划的方法: p[i]表示股票第i天的价格,考虑dp[i]表示第i天的最大收益。因此有递推公式如下: dp[i] = p[i] - buy > dp[i-1]?p[i]-buy:dp[i-1] dp[0] = p[0] 这里的buy用于记录买入股票的最低价钱。 public int maxProfi

2020-06-21 14:21:13 387

原创 爬楼梯

假设你正在爬楼梯,一共有n阶;每次可以爬1阶或者2阶。请问一共有多少种不同的爬法? 题解: 我们使用dp[i]表示爬到第i阶,并且最后一次为1阶的爬法;用np[i]表示爬到第i阶,并且最后一次为2阶的爬法。 因此爬到第i阶的方法=dp[i] + np[i] dp的递推公式: dp[i] = dp[i-1]+np[I-1]; np的递推公式: np[I] = dp[i-1]; class Solution { public int climbStairs(int n) { int[]

2020-06-21 11:31:19 104

原创 最大子序列的和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 题解: 使用dp[i]表示以i为结尾的连续子数组的最大值。 有如下递推公式:dp[i] = (dp[i-1]+nums[i])>nums[i]?dp[i-1]+nums[i]:nums[i]; 最终的结果 ret = Max(dp[i]) public int maxS

2020-06-21 11:01:03 96

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除