- 博客(24)
- 收藏
- 关注
原创 使用插入排序优化快排
希尔排序相当于分组插入排序,就是从全局的角度把乱序数组处理得趋于有序,从而提高插入排序的效率。每次选择基准数,把小于基准数的放到基准数的左边,把大于基准数的放在基准数的右边,采用“分治思想”处理剩余的序列元素,直至整个序列变为有序序列.因为左子问题中的元素总是小于等于基准,右子问题的元素总是大于等于基准,所以当序列长度越来越小时,序列一定是趋于有序的,考虑使用插入排序。由上图我们一般会联想到归并排序,因为归并排序是先分治再比较,所以可以保证每次的子问题处理的序列长度是相等的,但快速排序显然不是这样的。
2022-11-25 10:21:49 645 6
原创 22下第十一周周赛总结
如果当前数字不在它该在的位置上,把让它到他该在的位置上去 如果换过来的数也不该在这个位置就继续换 直到该在这个位置的数归位为止。:字符串哈希+最长上升子序列 或 字符串哈希+最大不相交区间的数量。字符串哈希+最大不相交区间的数量。字符串哈希+最长上升子序列。
2022-11-13 16:31:00 254
原创 22下第十周周赛总结
如图所示,我们发现如果就近就有工厂,舍近求远只会发生交叉让答案变得更大,所以存在最优方案使得在机器人下标单调递增的情况下,机器人们去的工厂的下标应该是不严格单调递增的。然后考虑该题工厂有修复上限限制,我们可以把每个工厂都看作一个分组,工厂每一种修复方案都可以看作组内的一个物品,则可以把该题变成分组背包问题。一模一样,只不过该题的工厂有修复机器上限,不是所有机器人都可以到一个工厂修复,所以不能直接用绝对值不等式找中位数。假设机器人坐标是单调递增的,假如有两个工厂下标分别为。:贪心思路和上上次周赛的第三题。
2022-11-07 12:14:40 181
原创 22下第八周周赛总结
把cost数组当作对应元素出现的个数,这样想的话,每个数的操作一次的代价就是1,然后按照。看作两个区间,让他们不相交即可。的思想,中位数即为最优解。
2022-10-23 22:42:22 299 3
原创 22下第六周周赛总结
通过图可以发现环外的点是一定无法回到环内的,所以想要满足题目条件,所有点都要在环内才行,所以先判断是否所有点入度都为1,然后用并查集维护距离即可,因为满足条件的图都是连通的环,所以不是无向图也可以用并查集维护距离。思路:先遍历字符串找到每个元素最后出现的位置,先把当前最小的都加入到答案字符串再考虑后面,最后再把t中的字符从尾到头更新到答案中即可。思路:三维状态表示dp即可,因为数据n*m小于五万,k不超过五十,所以时间开销不大。思路:每个点只有一个出度,n条边连接n个点,最后一定会有环的存在,属于基环树。
2022-10-09 15:24:42 247
原创 力扣第300场周赛补题
思路:用关联容器使key串中字母第一个出现的顺序和字符字典序建立对应联系。 思路:没什么思路就蛇形矩阵模板,参考蛇形矩阵也可以使用偏移量来做,按照右下左上的顺序越界或遇到已经访问过的位置就转向 思路:用f[i][j]表示状态:第i天后保守秘密j天的人。状态O(n^2) 转移O(n),需要优化,发现转移时可以用前缀和预处理优化。思路:滑雪模板变种,该题符合拓扑序,以(i,j)为起点的路线的集合为状态集合,状态转移为上下左右四个方位,参考滑雪.........
2022-07-04 01:00:06 167
原创 力扣第299场周赛补题
题链思路:正反对角线在i=j和i+j=n-1两条线上,直接遍历所有点即可。题链思路:用0表示该位未放置房子,用1表示该位放置房子,把问题转换为不存在连续两个1的01子序列的方案数(状态机问题:一维表示路径长度,二维表示哪种状态)或者发现其实际上是斐波那契数列的规律题链思路:比赛时思路,找nums1中对位替换后对nums2之和增大贡献最大的连续子序列,然后再找nums2中对位替换后对nums1之和增大贡献最大的连续子序列,取两值较大的。代码简化:题链思路:...
2022-06-27 18:07:48 163
原创 力扣第81场双周赛补题
题目链接思路:用一个计数器记录‘|’出现的次数,‘|’出现偶数次则接下来出现的‘*’为答案所求。 题目链接思路:图的连通性问题,用总点对数减去不连通的点对。(模板题)//并查集或DFS题目链接思路:每次操作为nums[i]&(nums[i]^x),括号外为&,则nums[i]二进制表示中的0是无法改变的,只能改变1变为0,想要最后的异或和最大,就要让异或和二进制表示中有更多的1,通过刚才的分析可知,只要某列不是全为0,都可以通过操作使最后的异或和为1。比赛的时候写复杂了,下面是简化版代码:
2022-06-27 00:15:25 215
原创 第298场周赛补题
链接思路:先找大小字母都出现的,在比较它们的大写字母的大小。(比赛的时候代码写的比较差,知道思路就行了哈)链接思路:能影响个位的只有个位,从小到大遍历k乘以多少的余数可以等于num的余数,所得即答案链接思路:二进制串中0全选,以此基础上看能选多少个1链接思路:定义f[i][j]表示一块高i宽j的木块切割后的最大价值,比较其直接售卖和垂直切割和水平切割的收益取最大的即可。...
2022-06-19 14:29:56 87
原创 第293周赛总结
第一题:移除字母异位词后的结果数组题目链接题目大意:遇到连续的字母异位词只保留第一个思路:双指针class Solution {public: bool check(string s,string t){ unordered_map<char,int> mp; for(auto c:s){ mp[c]++; } for(auto c:t){ mp[c]--;
2022-05-16 18:29:36 87
原创 力扣292周赛补题
第一题:字符串中最大的三位相同数字原题链接思路:模拟class Solution {public: string largestGoodInteger(string num) { string ans; for(int i=0;i<num.size()-2;i++){ if(num[i]==num[i+1]&&num[i+1]==num[i+2]){ string tmp={
2022-05-09 12:42:22 116
原创 力扣291周赛总结
第一题:移除指定数字得到的最大结果原题链接题目大意:可以删掉number字符串中与digit字符相等的一个字符,使得删除后得到的字符串表示的数字最大,数据保证至少有一个字符可以删除。思路:模拟 借助辅助函数比较找最大的即可class Solution {public: bool check(string a,string b){ for(int i=0;i<a.size();i++){ if(a[i]==b[i]) continue;
2022-05-03 17:10:38 246
原创 力扣第290场周赛总结
第一题:多个数组求交集原题链接题目:给你一个二维整数数组nums,其中nums[i]是由不同正整数组成的一个非空数组,按升序排列返回一个数组,数组中的每个元素在nums所有数组中都出现过。示例1:输入:nums = [[3,1,2,4,5],[1,2,3,4],[3,4,5,6]]输出:[3,4]解释:nums[0] = [3,1,2,4,5],nums[1] = [1,2,3,4],nums[2] = [3,4,5,6],在 nums 中每个数组中都出现的...
2022-04-25 12:03:40 575
原创 力扣第76场双周赛总结
双周赛:第一题:找到最接近0的数字原题链接示例:输入:nums = [-4,-2,1,4,8]输出:1思路:找绝对值最小或绝对值相等是本身较大的数。class Solution {public: int findClosestNumber(vector<int>& nums) { int res=nums[0]; for(auto x:nums){ if(abs(res)>abs(x.
2022-04-17 15:02:01 396
原创 力扣288周赛补题
第一题:按奇偶性交换后的最大数字原题链接思路:先把整数num的每位数按奇偶分开,再通过判断原数该位奇偶性放入奇数或偶数。因为偶数或奇数之间可以互换,先填充大的即可得到较大的重排数。class Solution {public: int largestInteger(int num) { vector<int> ord;//原 vector<int> odd;//奇 vector<int> even..
2022-04-13 17:28:33 234
原创 广度优先搜索专题
广度优先搜索是一种盲目搜索法,目的是系统地展开并检查图中的所有节点,以寻找结果。它考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止,不使用经验法则算法。例题一:对称的二叉树(简单)题目链接:https://leetcode-cn.com/problems/symmetric-tree/题目:给你一个二叉树的根节点root,检查它是否轴对称示例一输入:root = [1,2,2,3,4,4,3]输出:true示例二输入:root = [1,2,2,null,3
2022-01-27 00:10:23 972
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人