02 2025 档案

摘要:思路 令待交换的两个数为“小数”和“大数” 1. 从后往前找第一个升序对i,j使得nums[i]<nums[j]。“小数”就是nums[i]。此时[j,end)必然是降序 2. 再从后往前找一个比“小数”大的数作为“大数”,交换二者 3. 交换后将“大数”后的所有数重新排为升序:此时[j,end]仍 阅读全文
posted @ 2025-02-23 17:37 NeroMegumi 阅读(3) 评论(0) 推荐(0) 编辑
摘要:回溯 分割回文串 思路 回溯模板:每次传入起始位置,for循环遍历不同子串,若子串回文则递归;直到起始位置==s.size() 代码 class Solution { public: vector<vector<string>> result; vector<string> path; void b 阅读全文
posted @ 2025-02-21 11:46 NeroMegumi 阅读(4) 评论(0) 推荐(0) 编辑
摘要:一、堆的基本操作 以大根堆为例 包括——初始化堆、调整堆、插入元素和删除元素 对应时间复杂度为O(n)(自底向上建堆),O(logn),O(logn),O(logn) 插入操作:先将新元素添加到堆的末尾;如果它比父节点更大则交换,直到更小。 删除操作是:把堆顶和堆底元素交换,然后再调整[堆顶,堆底前 阅读全文
posted @ 2025-02-18 11:52 NeroMegumi 阅读(5) 评论(0) 推荐(0) 编辑
摘要:一、回溯算法能解决如下问题: 组合问题:N个数里面按一定规则找出k个数的集合 排列问题:N个数按一定规则全排列,有几种排列方式 切割问题:一个字符串按一定规则有几种切割方式 子集问题:一个N个数的集合里有多少符合条件的子集 棋盘问题:N皇后,解数独等等 二、回溯法的模板: void backtrac 阅读全文
posted @ 2025-02-11 11:20 NeroMegumi 阅读(6) 评论(0) 推荐(0) 编辑
摘要:思路 每个腐烂橘子向四周感染一次,直到没有新鲜橘子所需的最少时间。其中一定设计图的遍历,那么是DFS还是BFS?因为要求一层层感染完的最少时间,所以用BFS。即把腐烂橘子放入队列,每次感染一波出队,再把新感染的入队,直到所有腐烂橘子都向四周感染过一次。 为了判断是否有橘子永远不会被感染,还要记录一开 阅读全文
posted @ 2025-02-10 09:14 NeroMegumi 阅读(8) 评论(0) 推荐(0) 编辑
摘要:单调栈 要求「从 栈顶 到 栈底 的元素是单调递增(或者单调递减)」。其中满足从栈顶到栈底的元素是单调递增的栈,叫做「单调递增栈」。满足从栈顶到栈底的元素是单调递减的栈,叫做「单调递减栈」。(有的文章是从栈底到栈顶,本文默认从栈顶到栈底) 怎么能想到用单调栈呢? 什么时候用单调栈呢? 通常是一维数组 阅读全文
posted @ 2025-02-05 10:30 NeroMegumi 阅读(4) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示