技术栈
分治
✿ ༺ ོIT技术༻
16 天前
算法
·
排序算法
·
剑指offer
·
双指针
·
滑动窗口
·
分治
剑指offer第2版:双指针+排序+分治+滑动窗口
调整数组顺序使奇数位于偶数前面(二)_牛客题霸_牛客网如果不考虑相对位置的话,那么我们可以模仿hoare快排,使用双指针的思想,一个指针在前向后找偶数,一个指针在后,向前找奇数,然后再交换就行 时间复杂度是n
菜鸟55555
17 天前
算法
·
dp
·
模板
·
分治
·
竞赛
·
算法思想
常用算法思想及模板
今天继续整理一些关于算法竞赛中C++适用的一些模板以及思想。保留x位小数在C语言中可以使用printf中的"%.xf"来实现,但是很多C++选手由于关闭了同步流,害怕cin、cout与scanf、printf混用容易出错,所以就给大家介绍一个强制保留x位小数的代码格式。
junjunyi
17 天前
链表
·
排序
·
分治
·
归并
【LeetCode 148】算法进阶:排序链表 ( 归并排序、快速排序、计数排序 )
题目:给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。提示:进阶:你可以在 O (n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗?
Alfred king
22 天前
矩阵
·
树
·
数组
·
分治
面试150 建立四叉树
采用递归分治的思路构建四叉树。首先判断当前区域内的值是否全部相同,若是,则构建一个叶子节点;若否,则将区域划分为四个子区域(左上、右上、左下、右下),对每个子区域递归构建对应的子节点,并将其作为当前非叶子节点的四个子树。通过不断划分和合并,实现将二维网格压缩为一棵结构紧凑的四叉树。
Alfred king
24 天前
面试
·
职场和发展
·
数组
·
队列
·
分治
面试150 环形子数组的最大和
通过分情况处理,先求出非环形情况下的最大子数组和(max_sum),然后用类似方式求出最小子数组和(min_sum)。由于环形最大子数组可能由总数组和减去中间最小子数组得到,因此再计算总和 total - min_sum 与 max_sum 进行比较,取两者的较大值作为最终答案。注意到如果数组全为负数,此时 total - min_sum 等于 0,会误导结果,因此单独判断 max_num < 0 的情况,直接返回最大值,避免错误。该方法充分利用了Kadane算法的优雅特性,时间复杂度为 O(n)。
127_127_127
1 个月前
数据结构
·
图论
·
模拟
·
ad-hoc
·
分治
·
转化
2025 FJCPC 复建 VP
按开题顺序写 \(BCDEFGHIJKLA(D?)\),\(M\) 送的不写首先发现铜铁本质等价(铜铁的转换不影响 \(val\) ),所以考虑枚举最后金和银的数量 \(gold, silver\),那么约束条件为:
coding者在努力
3 个月前
数据结构
·
算法
·
动态规划
·
分治
·
速成
·
期末考试
高级数据结构与算法期末考试速成记录
Master公式(又称主定理,Master Theorem)是一种用于快速求解分治递归算法时间复杂度 的数学工具,适用于递归式形如以下形式的算法: T ( n ) = a T ( n b ) + O ( n c ) 其中 a : 子问题被递归调用的次数 b : 将原问题分为了几个子问题 O ( n c ) : 分治之后合并所需要的时间复杂度 T(n)=aT(\frac{n}{b})+O(n^c)\\ 其中a:子问题被递归调用的次数\\ b:将原问题分为了几个子问题\\ O(n^c):分治之后合并所需要的时
Jcqsunny
7 个月前
算法
·
深度优先
·
树
·
分治
[分治] FBI树
我们可以把由 0 0 0 和 1 1 1 组成的字符串分为三类:全 0 0 0 串称为 B B B 串,全 1 1 1 串称为 I I I 串,既含 0 0 0 又含 1 1 1 的串则称为 F F F 串。
鸽鸽程序猿
8 个月前
java
·
算法
·
分治
【算法】【优选算法】分治(下)
题目链接:归并排序 题目描述:题目解析:解题思路:解题代码:题目链接:LCR170.交易逆序对的总数 题目描述:
鸽鸽程序猿
8 个月前
java
·
算法
·
分治
【算法】【优选算法】分治(上)
分治:分而治之,就是将一个大问题拆分为多个小问题,逐一解决。题目链接:75.颜⾊分类 题目描述:题目解析:
Trouvaille ~
9 个月前
c++
·
算法
·
面试
·
蓝桥杯
·
排序算法
·
快速排序
·
分治
【优选算法篇】化繁为简,见素抱朴:从乱象中重构秩序的艺术
🚀 欢迎讨论:如果你有任何问题或见解,欢迎在评论区留言。👍 点赞、收藏与分享:如果觉得这篇文章对你有帮助,请点赞、收藏并分享给更多朋友。
一直学习永不止步
9 个月前
java
·
算法
·
leetcode
·
字符串
·
滑动窗口
·
哈希表
·
分治
LeetCode题练习与总结:至少有 K 个重复字符的最长子串--395
给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。
NuyoahC
10 个月前
c++
·
笔记
·
分治
算法笔记(五)——分治
分治算法字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序)…
闻缺陷则喜何志丹
1 年前
c++
·
算法
·
二分查找
·
力扣
·
分治
·
最大
·
拆位法
【C++二分查找 拆位法】2411. 按位或最大的最小子数组长度
C++二分查找 拆位法(分治法)给你一个长度为 n 下标从 0 开始的数组 nums ,数组中所有数字均为非负整数。对于 0 到 n - 1 之间的每一个下标 i ,你需要找出 nums 中一个 最小 非空子数组,它的起始位置为 i (包含这个位置),同时有 最大 的 按位或运算值 。 换言之,令 Bij 表示子数组 nums[i…j] 的按位或运算的结果,你需要找到一个起始位置为 i 的最小子数组,这个子数组的按位或运算的结果等于 max(Bik) ,其中 i <= k <= n - 1 。 一个数组的
Aurelius-Shu
1 年前
leetcode
·
排序算法
·
动态规划
·
递归
·
分治
·
逆向思维
术之尽头:排序算法优化思考
排序算法是人们研究的最多的一类计算机算法,也是计算机中最基础、使用频率最高的一类算法。虽然对排序算法的理论研究在目前看来被认为已经是最优解,但面对工业界各类问题,人们还是持续提出了针对特定场景的“更优”的算法。通过对排序算法的研究和优化,我们可以清晰的感受和思考算法优化的过程与诀窍。
狗也会摔跤TUT
1 年前
算法
·
排序算法
·
分治
【刷题篇】分治-归并排序
给你一个整数数组 nums,请你将该数组升序排列。在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数。
芥末虾
1 年前
数据结构
·
c++
·
算法
·
排序算法
·
归并排序
·
快速排序
·
分治
【优选算法】分治 {三分快排:三指针优化,随机选key,快速选择算法;归并排序:统计数组中的逆序对,统计数组中的翻转对;相关编程题解析}
优化一:三指针优化之前学习的快速排序无法妥善处理相等或重复序列的排序问题(有序且三数取中无效),使快速排序的效率无法达到最优。
阿常11
1 年前
算法
·
leetcode
·
职场和发展
·
哈希
·
分治
leetcode——169.多数元素(多解法)
给定一个大小为 n 的数组 nums ,返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。
一直学习永不止步
1 年前
java
·
leetcode
·
二叉树
·
树
·
数组
·
哈希表
·
分治
LeetCode题练习与总结:从中序与后序遍历序列构造二叉树--106
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。
邪神与厨二病
1 年前
二分查找
·
模拟
·
分治
·
z算法
·
构造
·
拓展kmp
·
根号分治
Codeforces Round 943 (Div. 3)(A,B,C,D,E,F,G1,G2)
比赛链接这场比较有意思,可惜最近太忙了没法仔细研究,只能看看别人的题解然后补掉了。这场还是比较难的。C,E是构造,D是个模拟,F需要先推出一个结论,之后二分查找,G题是字符串的题,需要先用拓展kmp预处理一下,然后做法也很多,有根号分治,分治+剪枝,还有一个按顺序加数然后二分的做法。FG比较难,解题思路确实很妙。