- 博客(107)
- 收藏
- 关注
原创 DAY24
啊 看着挺复杂 其实很简单第一种方法就是纵轴是怪兽编号 横轴是能力值看看能不能打过逻辑很简单 看看能不能打得过 打过的就在花钱和直接打里面取小的 打不过就只能花钱这种方法就导致 如果怪兽的能力值很大 那么我们就需要很大的空间所以引出下一种做法纵轴是怪兽编号 横轴是钱数我们对比一下这两种方法1.当能力值大 钱小的情况 第一种方法浪费空间 第二种不浪费2.当能力值小 钱多的情况 第二种浪费 第一种不浪费所以 根据数况来取。
2023-08-23 08:27:36
907
原创 DAY23
给定一个全是小写字母的字符串str.删除多余字符,使得每种字符只保留一个,并让最终结果字符串的字典序最小str= "acbc", 删掉第一个c, 得到"abc", 是所有结果字符串中字典序最小的。str = "dbcacbca", 删掉第一个b'、 第一个'c'、 第二个c、第二个'a", 得到"dabc",是所有结果字符串中字典序最小的。删除多余的 和保留该保留的是一致的。
2023-08-20 20:24:22
216
原创 DAY22
给定一个有序的正数数组arr和一个正数range,如果可以自由选择arr中的数字,想累加得到1-range范围上所有的数,返回arr最少还缺几个数。[举例]arr. = {1.2,3,7},range = 15想累加得到1-15范围上所有的数,arr 还缺14这个数,所以返回1 arr={1,5,7},range= 15想累加得到1~15范围上所有的数,arr 还缺2和4,所以返回2。
2023-08-16 07:27:24
90
原创 DAY20
一个字符串 最少分隔让它全都是回文字符串做一个dp[][]数组 dp[i][j] 表示i....j位置上的字符串是否为回文字符串 依赖于dp[i+1][j-1] 也就是左边界缩一个格子 右边界缩一个格子basecase 对角线 dp[i][i]只有一个字符 必为回文最后一列 倒数第二行的格子 也就是对角线右边的一条线 依赖左下的话 是空的 所以一次填两条斜线万无一失第二条斜线也好办 就两个元素 相等为回文 不等为非回文。
2023-08-12 22:05:12
198
原创 跳表与Redis
跳表是Redis有序集合ZSet底层的数据结构首先有一个头结点 这个头结点里面的数据是null 就是他就是这个链表的最小值 就算是Math.Min也比它大然后我们新建一个节点的时候是怎么操作的呢 先根据参数(假如说是5)创建一个节点 然后把它放在对应位置 就是找到小于他的最大节点 然后把它放在这个小于他的最大节点后面 我们当前只有一个null节点 而且它是最小的 所以直接放在他后面就行了。
2023-08-08 08:13:30
355
原创 刷题DAY16
给定两个字符串str1和str2,再给定三个整数ic、dc和rc,分别代表插入、删除和替换一个字符的代价,返回将str1编辑成str2的最小代价。
2023-08-06 07:46:19
238
原创 刷题DAY13
手撕mannacher算法总之是找最长回文字符串最暴力的解法是什么呢你就枚举每一个字符 往左右扩 看它每步一不一样 但是这个恶心在哪呢 1221这样的回文字符串 你找不到它的对称轴 它是虚轴那我们怎么优化呢 1#2#2#1 哎 这样就能把虚轴给枚举出来了哎 你可能会问 啊 那我字符串中本来就有#咋办 假如说 #22# 我转化成##2#2## 影响吗?他该是回文还是回文啊 不是回文咋填都不是回文 填一都行但是这样实在是太暴力了 我们选择进行优化 也就引出了mannacher算法。
2023-08-01 08:45:55
63
原创 刷题day12
给定一个只包含正整数的数组arr,arr中任何一个子数组sub,一定都可以算出(sub累加和)*(sub中的最小值)是什么,那么所有子数组中,这个值最大是多少?啊 假如说有这么一个数组 3 4 5 6 3 2 73来说 以3位子数组的的值怎么说 既然以3为最小值以确定了 那么sub累加和一定要最大 也就是看看这个子数组的左右边界能扩到哪(去找 右边的第一个小于3的值 左边第一个小于它的值)我们知道 单调栈可以找到 左边的第一个更小(大)值 右边的第一个更小值。
2023-07-31 08:55:37
82
原创 刷题DAY 11
给定一个整型数组arr,和一个整数num某个arr中的子数组sub,如果想达标,必须满足:sub中最大值-sub中最小值<=num,返回arr中达标子数组的数量滑动窗口法,滑动窗口有两个行为1.右括 2.左缩如果arr[]达标 那它的子数组也一定达标如果arr[]不达标 那它往左扩往右扩一定不达标这么一听是不是挺扯的?新加一个数或者减少一个数一定没有影响我们来分析一下 一个窗口里面 最大值为5 最小值是1 目标值是3 它目前不达标对吧 我们新加一个数进来 如果你不大于也不小于 原本的最大值最小值 那你压根
2023-07-27 15:04:04
133
原创 刷题DAY10
奖励自己一个手撕并查集int value;value = v;//用来保存所有节点 你得通过value找到对应点//所有节点对应的父节点//保存每个节点对应的 这一条的 sizepublic void add(int [] arr) {//初始化并查集i++) {//每个节点的父亲都是它自己//每个父亲的为头的串 长度只有1 只需要记录父节点的长度就行了 其他的都是冗余的。
2023-07-25 08:08:45
52
原创 刷题-DAY9
一上来就是hard 信封问题给你一个二维整数数组envelopes,其中,表示第i个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。:不允许旋转信封。先说结论 先按长从小到大排 然后宽从大到小排 然后以排序后的宽生成一个数组 在数组里面找最长子递增序列逻辑是 先把长从小到大排 这个好理解吧 小的才能套进长的里面。
2023-07-23 17:04:41
223
原创 类斐波那契数列问题
首先说明 这种解法并不能解决带条件转移方程的问题对于斐波那契数列来说我们有解法1:最暴力的解法 递归 第N个位置的值是由N-1 N-2位置的值相加而来解法2:这是解法1的优化解法 通过dp数组 减少重复计算解法3:这是我们要讲解的重点N位置的值F(N)满足以下等式先说结论对于 F(N) = c1F(N-1)+c2F(N-2).....+ckF(N-kc1 c2 ... ck 都为任意常数那么可以看做k阶问题假如说3阶问题 就有[F(4),
2023-07-23 15:40:28
119
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人