分治

Alfred king3 小时前
矩阵··数组·分治
面试150 建立四叉树采用递归分治的思路构建四叉树。首先判断当前区域内的值是否全部相同,若是,则构建一个叶子节点;若否,则将区域划分为四个子区域(左上、右上、左下、右下),对每个子区域递归构建对应的子节点,并将其作为当前非叶子节点的四个子树。通过不断划分和合并,实现将二维网格压缩为一棵结构紧凑的四叉树。
Alfred king2 天前
面试·职场和发展·数组·队列·分治
面试150 环形子数组的最大和通过分情况处理,先求出非环形情况下的最大子数组和(max_sum),然后用类似方式求出最小子数组和(min_sum)。由于环形最大子数组可能由总数组和减去中间最小子数组得到,因此再计算总和 total - min_sum 与 max_sum 进行比较,取两者的较大值作为最终答案。注意到如果数组全为负数,此时 total - min_sum 等于 0,会误导结果,因此单独判断 max_num < 0 的情况,直接返回最大值,避免错误。该方法充分利用了Kadane算法的优雅特性,时间复杂度为 O(n)。
127_127_12721 天前
数据结构·图论·模拟·ad-hoc·分治·转化
2025 FJCPC 复建 VP按开题顺序写 \(BCDEFGHIJKLA(D?)\),\(M\) 送的不写首先发现铜铁本质等价(铜铁的转换不影响 \(val\) ),所以考虑枚举最后金和银的数量 \(gold, silver\),那么约束条件为:
coding者在努力2 个月前
数据结构·算法·动态规划·分治·速成·期末考试
高级数据结构与算法期末考试速成记录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):分治之后合并所需要的时
Jcqsunny6 个月前
算法·深度优先··分治
[分治] 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 串。
鸽鸽程序猿7 个月前
java·算法·分治
【算法】【优选算法】分治(下)题目链接:归并排序 题目描述:题目解析:解题思路:解题代码:题目链接:LCR170.交易逆序对的总数 题目描述:
鸽鸽程序猿8 个月前
java·算法·分治
【算法】【优选算法】分治(上)分治:分而治之,就是将一个大问题拆分为多个小问题,逐一解决。题目链接:75.颜⾊分类 题目描述:题目解析:
Trouvaille ~8 个月前
c++·算法·面试·蓝桥杯·排序算法·快速排序·分治
【优选算法篇】化繁为简,见素抱朴:从乱象中重构秩序的艺术🚀 欢迎讨论:如果你有任何问题或见解,欢迎在评论区留言。👍 点赞、收藏与分享:如果觉得这篇文章对你有帮助,请点赞、收藏并分享给更多朋友。
一直学习永不止步8 个月前
java·算法·leetcode·字符串·滑动窗口·哈希表·分治
LeetCode题练习与总结:至少有 K 个重复字符的最长子串--395给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。
NuyoahC10 个月前
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-Shu1 年前
leetcode·排序算法·动态规划·递归·分治·逆向思维
术之尽头:排序算法优化思考排序算法是人们研究的最多的一类计算机算法,也是计算机中最基础、使用频率最高的一类算法。虽然对排序算法的理论研究在目前看来被认为已经是最优解,但面对工业界各类问题,人们还是持续提出了针对特定场景的“更优”的算法。通过对排序算法的研究和优化,我们可以清晰的感受和思考算法优化的过程与诀窍。
狗也会摔跤TUT1 年前
算法·排序算法·分治
【刷题篇】分治-归并排序给你一个整数数组 nums,请你将该数组升序排列。在股票交易中,如果前一天的股价高于后一天的股价,则可以认为存在一个「交易逆序对」。请设计一个程序,输入一段时间内的股票交易记录 record,返回其中存在的「交易逆序对」总数。
芥末虾1 年前
数据结构·c++·算法·排序算法·归并排序·快速排序·分治
【优选算法】分治 {三分快排:三指针优化,随机选key,快速选择算法;归并排序:统计数组中的逆序对,统计数组中的翻转对;相关编程题解析}优化一:三指针优化之前学习的快速排序无法妥善处理相等或重复序列的排序问题(有序且三数取中无效),使快速排序的效率无法达到最优。
阿常111 年前
算法·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比较难,解题思路确实很妙。
wang_nn1 年前
c++·二叉搜索树·分治·面试经典150
【面试经典 150 | 分治】将有序数组转换为二叉搜索树本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:
旋转的油纸伞1 年前
算法·leetcode·矩阵·二分查找·分治
LeetCode-240. 搜索二维矩阵 II【数组 二分查找 分治 矩阵】编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:
_GR1 年前
数据结构·c++·算法·leetcode·排序算法·快速排序·分治
每日OJ题_算法_分治快排②_力扣912. 排序数组(三路划分快排)目录三路划分快排原理力扣912. 排序数组解析代码分治就是分而治之,快排在数据结构也学过了,现在来学一学三路划分快排(数组划分三块):