Punk Boy
码龄5年
关注
提问 私信
  • 博客:32,883
    32,883
    总访问量
  • 42
    原创
  • 313,471
    排名
  • 503
    粉丝
  • 0
    铁粉
  • 学习成就
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2020-04-29
博客简介:

weixin_47455684的博客

查看详细资料
  • 原力等级
    成就
    当前等级
    3
    当前总分
    365
    当月
    2
个人成就
  • 获得676次点赞
  • 内容获得12次评论
  • 获得675次收藏
创作历程
  • 25篇
    2024年
  • 17篇
    2023年
成就勋章
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

180人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

代码随想录算法二刷第一天(待写)

1移除元素还是不会,得多刷几次。2二分查找成功写出来了。
原创
发布博客 2024.01.31 ·
486 阅读 ·
7 点赞 ·
0 评论 ·
8 收藏

代码随想录一刷总结

十一月份报了卡哥的代码训练营,总计两个月,收获颇丰。
原创
发布博客 2024.01.29 ·
441 阅读 ·
7 点赞 ·
0 评论 ·
12 收藏

单调栈最后一天

给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1。求在该柱状图中,能够勾勒出来的矩形的最大面积。
原创
发布博客 2024.01.29 ·
414 阅读 ·
8 点赞 ·
0 评论 ·
7 收藏

单调栈第二天

给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。遇到第一个比栈顶大的元素时,弹出栈顶做记录,再利用当前遍历到的值计算差值和下标差值。若当前比栈里的大,则弹出,栈顶下标对应的第一个最大值为栈里的值。用单调栈,没想清楚处理逻辑,要怎么计算雨水。
原创
发布博客 2024.01.26 ·
696 阅读 ·
9 点赞 ·
0 评论 ·
8 收藏

单调栈第一天

例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。我的做法是遍历完nums2后看stack中是否还有剩余,若有剩余,遍历stack,看剩下的元素是否在nums1中出现过,若出现过,则将目标值的下标置为-1。遍历nums2数组,使用一个栈,用栈记录我们遍历过的元素,栈里的记录遵循递增or递减。遍历数组,使用一个栈,用栈记录我们遍历过的元素,栈里的记录遵循递增or递减。
原创
发布博客 2024.01.25 ·
819 阅读 ·
20 点赞 ·
0 评论 ·
24 收藏

动态规划最后一天(回文串)

若i>j-1,则dp[i][j] = dp[i+1][j-1](看i,j中间的是否是回文串)用动态规划,若i==j 则看i和j之间是否是回文串,如果是回文则dp[i][j]也是回文。若s[i]==s[j] 则dp[i][j] = dp[i+1][j-1]dp[i][j] 依赖于 dp[i+1][j-1] 则可以从下往上,从左往右进行遍历。dp[i][j] 依赖于 dp[i+1][j-1] 则可以从下往上,从左往右进行遍历。回文串记得通过[i,j]中间的来进行判断,相等时不要忘了dp[i+1][j-1]
原创
发布博客 2024.01.24 ·
385 阅读 ·
9 点赞 ·
0 评论 ·
8 收藏

动态规划Day16(编辑距离,删除元素待写完)

是dp[i][j] = Math.min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+2);是dp[i][j] = Math.min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+2);若不相同,二选一 dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1]);因为dp[i][j] 代表0~i-1,0~j-1的最大删除次数,因为dp[i][j] 代表0~i-1,0~j-1的最大删除次数,
原创
发布博客 2024.01.23 ·
963 阅读 ·
19 点赞 ·
0 评论 ·
26 收藏

动态规划Day15(子序列第三天,找回状态中。)

t[j-1]时,dp[i][j]要看t[j-2]能组成s[i-1]的最大长度 dp[i][j] = dp[i][j-1]=t[j-1]时,dp[i][j]要看t[j-2]能组成s[i-1]的最大长度 dp[i][j] = dp[i][j-1]因为dp[i][j] 代表0~i-1,0~j-1的最大子序列,则不需要定义dp[i][0],dp[0][j],因为0 代表-1没有意义。2 若不加上s[i-1],也就是s[i-1] 之前的元素也能组成t[j-1] 则为dp[i-1][j]
原创
发布博客 2024.01.22 ·
744 阅读 ·
16 点赞 ·
0 评论 ·
14 收藏

动态规划Day14(子序列第二天)

因为dp[i][j] 代表0~i-1,0~j-1的最大子序列,则不需要定义dp[i][0],dp[0][j],因为0 代表-1没有意义。因为dp[i][j] 代表0~i-1,0~j-1的最大子序列,则不需要定义dp[i][0],dp[0][j],因为0 代表-1没有意义。dp的定义:dp[i][j] ,nums1 的[0,i-1], nums2的[0,j-1] 的最长公共子序列的长度。= text2[j] 则等于之前的最大值。dp[i][j]记录末尾为i-1和j-1的最长的子序列的长度。
原创
发布博客 2024.01.20 ·
984 阅读 ·
20 点赞 ·
0 评论 ·
22 收藏

动态规划Day13(子序列问题)

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], ..., nums[r - 1], nums[r]] 就是连续递增子序列。若nums[i-1]=nums[j-1] 则 dp[i][j] = dp[i-1][j-1]+1。dp[0][I]:nums1[0] 与 nums2[i] 相等则dp[0][i]为1其余 为0。
原创
发布博客 2024.01.19 ·
846 阅读 ·
22 点赞 ·
0 评论 ·
16 收藏

动态规划Day12(股票问题终结,有点疑惑)

打印dp数组时,为什么是Math.max(dp[prices.length][0],dp[prices.length[1]]);则直接为dp[i-1][1],不管是不是冷冻期都默认为dp[i-1][1]打印dp数组时,应该为 Math.max(dp[i][2],dp[i][3],dp[i][4])dp[0][1] = dp[0][0]+prices[0](是有问题的)dp[i][0] 买入股票的最大现金 减去相关的手续费即可。dp[i][1] 卖出股票的最大现金 加上相关的手续付费。1 当天之前是冷冻期。
原创
发布博客 2024.01.18 ·
975 阅读 ·
18 点赞 ·
0 评论 ·
19 收藏

动态规划(day11)买卖股票问题进阶

dp[i][1] 第i天or之前买入的最大金额 Math.max(dp[i-1][0]-price[i],dp[i-1][1]);dp[i][2] 第i天or之前卖出的最大金额 Math.max(dp[i-1][1]+price[i],dp[i-1][1]);当天买入Max(dp[i-1][0],dp[i-1][1]-price[i])当天买入Max(dp[i-1][1],dp[i-1][0]+price[i])dp[0][3]:-price[0] 第1天买入再卖出再买入。
原创
发布博客 2024.01.17 ·
969 阅读 ·
17 点赞 ·
0 评论 ·
15 收藏

动态规划(day10)买卖股票问题

力扣题目链接(opens new window)给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。示例 1:输入:[7,1,5,3,6,4]输出:5。
原创
发布博客 2024.01.16 ·
873 阅读 ·
19 点赞 ·
0 评论 ·
20 收藏

动态规划day09(打家劫舍,树形dp)

同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。给定一个代表每个房屋存放金额的非负整数数组,计算你 在不触动警报装置的情况下 ,能够偷窃到的最高金额。
原创
发布博客 2024.01.16 ·
927 阅读 ·
22 点赞 ·
0 评论 ·
21 收藏

动态规划Day08(背包结束,未写完)

给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。这是求排列数,判断[i,j] 是否有匹配的字符串,有则为true。使用背包,但是不知道这些字符串要怎么处理比较好。拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。
原创
发布博客 2024.01.15 ·
499 阅读 ·
7 点赞 ·
0 评论 ·
9 收藏

动态规划Day07

从dp[j]的定义来入手考虑递推公式,比如这道题dp[j]代表可以凑成总金额所需的最少的硬币个数,则递推公式为 ,要么选中当前物品 则为dp[j-coins[i]]+1 ,要么不选,则为dp[j](之前的值)当 m = 2,n = 3 时,n = 3 这表示一共有三个台阶,m = 2 代表你每次可以爬一个台阶或者两个台阶。使用0~m ,dp[j] 可以凑成总金额所需的最少的硬币个数。给你一个整数 n ,返回和为 n 的完全平方数的 最少数量。dp[j] 和为j的完全平方数的最小数量。
原创
发布博客 2024.01.15 ·
1720 阅读 ·
49 点赞 ·
0 评论 ·
51 收藏

动态规划Day06(完全背包)

所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)01背包中二维dp数组的两个for遍历的先后循序是可以颠倒了,一维dp数组的两个for循环先后循序一定是先遍历物品,再遍历背包容量。因为dp[j] 是根据 下标j之前所对应的dp[j]计算出来的。第i件物品的重量是weight[i],得到的价值是value[i]。我自己写成了 max(dp[j],dp[j-weight[i]]+1) 记混了。
原创
发布博客 2024.01.15 ·
840 阅读 ·
25 点赞 ·
0 评论 ·
19 收藏

动态规划day05(背包问题)

力扣题目链接(opens new window)题目难度:中等有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。输入:[2,7,4,1,8,1]输出:1。
原创
发布博客 2024.01.12 ·
1063 阅读 ·
20 点赞 ·
0 评论 ·
16 收藏

动态规划day04(01背包问题)

1 确定dp[i][j]时,若weight[i]>j 则没法取第二种情况,直接取第一种情况dp[i-1][j]1 确定dp[i][j]时,若weight[i]>j 则没法取第二种情况,直接取第一种情况dp[i-1][j]1 若选择物品i 则最大值为 dp[i-1][j-weight[i]]+value[i]1 若选择物品i 则最大值为 dp[j-weight[i]]+value[i]当j>=weight[i] dp[0][j]=weight[i]dp[i][j] 物品0~i之间能填入背包j的最大价值。
原创
发布博客 2024.01.12 ·
888 阅读 ·
24 点赞 ·
0 评论 ·
18 收藏

动态规划day03

将根节点编号比较好理解 当根节点为第j个节点时,左边为j-1 右边为 i-jdp[j-1]*dp[i-j]//一共i个节点,对于根节点j时,左子树的节点个数为j-1,右子树的节点个数为i-j。左子树为3 右子树为n-4 dp[3]*dp[n-4]左子树为2 右子树为n-3 dp[2]*dp[n-3]左子树为1 右子树为n-2 dp[1]*dp[n-2]左子树为0 右子树为n-1 dp[0]*dp[n-1]左子树为n-1 右子树为0 dp[n-1]*dp[0]拆分成近似的数时,得到的乘积是最大的。
原创
发布博客 2024.01.11 ·
804 阅读 ·
25 点赞 ·
0 评论 ·
21 收藏
加载更多