- 博客(545)
- 收藏
- 关注
原创 LeetCode 926. 将字符串翻转到单调递增*
值得注意的是这个题目的LCS思路;可以转化为寻找一个序列的最长不下降子串,之后直接总长度-1,但是这样必定是n2n^2n2的复杂度;可以转为LIS问题;使用dp数组g,下标表示长度为i的序列,内容为长度为i的序列结尾元素为多少;通过二分可以将时间变为nlognnlognnlogn;...
2022-06-13 14:12:51
127
原创 LeetCode 1051. 高度检查器
学校打算为全体学生拍一张年度纪念照。根据要求,学生需要按照 非递减 的高度顺序排成一行。排序后的高度情况用整数数组 expected 表示,其中 expected[i] 是预计排在这一行中第 i 位的学生的高度(下标从 0 开始)。给你一个整数数组 heights ,表示 当前学生站位 的高度情况。heights[i] 是这一行中第 i 位学生的高度(下标从 0 开始)。排序,还以为能用单调栈啥的,结果没用上;...
2022-06-13 14:08:33
103
原创 LeetCode 1673. 找出最具竞争力的子序列**
和题目同解决方案;是前驱方案;相当于寻找一个最小的非严格上升序列,保证前端元素尽可能地小;index代表已保存的位数;remain代表要删掉的个数;所以通过remain来确定,如果要保证前端元素尽可能小,最多能删除多少个;...
2022-06-10 22:25:49
1171
原创 LeetCode 526. 优美的排列***(double,need triple)
DP记忆化搜索;难点在于两地方:利用位bit来表达那些位置用了,不用关心具体用的是谁;枚举1~n位,此时表示考虑第i位能有多少收益,dp[i][state];其中state代表状态值;枚举所有状态,但是注意,由于现在枚举到i位,总共填进去i个数,因此state是否判断需要统计已用多少个,是否是i个,也就是统计每个状态的bit 1的个数;对合法状态进行1~n的枚举,首先选择填进去的数字要符合题目条件,其次对于该数,也必须在state表示已用过;加起来就行;...
2022-06-09 20:11:05
145
1
原创 LeetCode 497. 非重叠矩形中的随机点**
随即问题,统计点,然后直接随机抽一个,算是哪个矩阵的几行几列。前缀和二分有个问题;首先,对于n个点,随机数生成的是0~n-1的一个值,实际寻找的时候一定要+1;例如,对于生成随机数4,其实是要求第五个点;对于,0,1,4,8;如果按照4来找,会找到第二个矩阵,实际上要找第五个点,应该找到第三个矩阵;同理,后序在该矩阵里,应该找5-4=1,第一个点;但是后续算坐标偏移,又应该剪1,麻烦的一笔;...
2022-06-09 15:12:57
100
原创 LeetCode 1155. 掷骰子的N种方法**(double,need triple)
完全背包问题,被卡的一塌胡涂;看了三叶的才知道和传统01写的大差不差;其实传递过去应该是一个阶梯形,但是从0开始遍历无伤大雅;
2022-06-08 21:39:09
76
原创 LeetCode 6638. 大礼包***
记忆化搜索,是没想到还能这么搜的;采用完全背包有6个维度,有个牛批的人居然做出来,这我他妈的是没想到的;DP感觉和记忆化搜索类似,是否是一种?
2022-06-08 20:38:43
83
原创 LeetCode 1049. 最后一块石头的重量 II**
很难得一道题。。。一环扣一环,我是傻逼。刚开始想的是选取每次选取最大值抵消结果无解;第二次想的是每次求离均值最大的两个元素进行抵消,但是发现还是不太行;官方给的答案是整体加上正负号求序列和,使得结果的绝对值最小;例如,对于a,b,c,d四块石头,可以挑选(a,c),(d,b),相当于(a-c),(d-b),但是还要将这两块石头加入,还要在前面加正负号,但是这样展开还是相当于在所有元素前加入正负号,因此可以分为两组,第一组为被减数,第二组减数,只有当两组数相差足够小,才能满足绝对值最小;所以如果有sum总和,
2022-06-08 17:25:25
114
原创 LeetCode 1824. 最少侧跳次数**
卡在了dp条件上,其实思路不难想;里面有一个坑,有两种情况:所以判断特别繁琐,简单的判定方式为:这样判断有一好处,第一个条件可以保证跳过来的点,在同一级中同水平必须可达,破除坑1,并且可以同时满足2,判断三个最小值;例如:1 oo1第一列第二个位置不可达,要求补充第二列;先判断当前是否有障碍,无障碍就直接从上一个地方跳过来;可以得到:1 oo o1 1第二列中,第一个位置不可达,第二个位置从上一个位置不可达,第三个可以从上一个位置可达;在判断是否可以从同级的其他地方跳过来;可以得到:1 o
2022-06-07 21:05:39
138
原创 LeetCode 307. 区域和检索 - 数组可修改**
区间单值修改+求和的题;这里要注意一下l,r和cl,cr的思想;求区间和的的l,r应该是固定的,通过缩小cl,cr来确定区间所处区间,cl,cr进行削减;总共有三种情况:
2022-06-06 21:12:48
75
原创 LeetCode 1109. 航班预订统计*
差分,这道题还没发用传统区间排序做,可能会爆时间,并且区间重合度过高,判断起来十分费劲,目测要从左至右一直判断时间点;
2022-06-06 14:06:20
105
原创 LeetCode 1094. 拼车
这道题也可以用差分数组来算,但是个人觉得很取巧,原因是数组范围;如果对于数组范围为负数到正数,并不是给出的0~1000,差分数组方式并不是很合适;差分思想,区间起始结束进行标记,直接一边遍历中求最大值是否超过;差分必然快,因为On复杂度;...
2022-06-06 13:56:33
79
原创 LeetCode 829. 连续整数求和*
szy太强了;先确定范围,从2~len开始枚举长度;len,是从1,…,n,的最大长度,可以约等于为N\sqrt{N}N;这是,szy大佬提供了一个思路,不如用前缀和,如果项数为len,起始元素为a;则满足a∗len+(1+....+len)=na*len+(1+....+len)=na∗len+(1+....+len)=n;判断a是否为整数存在就行;...
2022-06-03 19:12:25
74
原创 LeetCode 1277. 统计全为 1 的正方形子矩阵***
和211题同思路;唯一不同的是以ij为右下角的矩阵,dp内容为边长,l边长的矩阵可以由右下角生成出l个矩阵;
2022-06-03 00:07:59
84
原创 LeetCode 1146. 快照数组***(double,need triple)
二分卡了很久,这里简单说一下这种情况,手写二分恶心的情况基本上都碰到了;首先明确一下,vector第一层是index,第二层是pair,first为快照id,second为具体元素;由于这种方法的特殊性,会导致某一时刻的快照,如果后续没有新改变,则不会保存;例如,快照索引:[3,5,6];代表,0,1,2,为空,4和3的快照相同,因此二分的时候要格外注意;对于寻找idx的情况,应该寻找两种:针对于第二种情况,会分三种,第一种情况可以合并为第三种;......
2022-06-02 23:43:14
141
原创 LeetCode 1353. 最多可以参加的会议数目***(double,need triple)
用普通区间思路没法做,但是涉及到区间贪心问题;优先选择结束时早的,就可以腾出来时间给其他会议;因此可以按照时间轴遍历,把所有会议加入到时间轴中;pq保留所有已开始会议的结束时间;每遍历一个时间点,做两件事:pq相当于保存已开始但是未结束的会议;......
2022-06-02 22:25:10
75
原创 LeetCode 390. 消除游戏**
跨区间模拟也行,但是题目不是这么做的,而且极其的麻烦;相当于只关心现阶段的队列元素个数,以及队头元素即可;
2022-06-02 18:34:29
280
原创 LeetCode 334. 递增的三元子序列**(double,need triple)
赋初始值的时候,已经满足second > first了,现在找第三个数third(1) 如果third比second大,那就是找到了,直接返回true(2) 如果third比second小,但是比first大,那就把second的值设为third,然后继续遍历找third(3) 如果third比first还小,那就把first的值设为third,然后继续遍历找third(这样的话first会跑到second的后边,但是不要紧,因为在second的前边,老first还是满足的)...
2022-06-02 17:20:28
61
原创 LeetCode 873. 最长的斐波那契子序列的长度**(double,need triple)
比之前见到的最长子序列问题更难;用常规的vector会爆时间,个人认为可能是随着序列的增加,会导致遍历unordered_map的时间会增大;题解思路是记录以(i,j)为结尾的最大长度;二维枚举i,j,寻找前面是否有arr[j]-arr[i],如果存在则存在一个三位的佩波那契数列[arr[j]-arr[i],arr[i],arr[j]];令arr[k]=arr[j]-arr[i];由(k,i)+1得到(i,j)的序列;这里注意一下,由于采用二维转一维的哈希标记...
2022-06-01 23:37:12
146
原创 LeetCode 1027. 最长等差数列
还是最长子序列问题,老生常谈;唯一不同的是O(n2)爆搜的时候需要进行map保存;据说和873题同思路;
2022-06-01 22:03:12
78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人