- 博客(17)
- 收藏
- 关注
原创 二分解决最大化最小值问题
题目要求我们从这n个区间中选择n个数,再求这n个数两两之间最小绝对差的最大值。为方便观察,我们对这n个数进行排序,其实也就是对这n个区间按照区间左端点进行排序,也就是对。 二分的本质思想就是将一个整体拆成两半,选取合适的一半之后再拆,再选,一直循环下去拿到最终想要的结果。所选整数的得分定义为所选整数两两之间的最小绝对差。贪心地想,第一个数越小,第二个数就越能在区间里,所以。这些数的任意两数之差至少为m,现在我要找符合条件的。,那么这n个数是很容易选出来的,如果。是具有单调性的,我们要的是值为。
2024-09-10 14:15:22
607
原创 前缀和 — 利用前缀信息解决子数组问题
前缀和只是我们用来表示子数组的一种方法而已,遇到具体问题,我们要找出问题的本质,子数组间有什么关系?,前缀和只是一种求子数组和子矩阵的方法而已,当遇到需要求解子数组或者子矩阵的问题时,如果需要用到子数组或者子矩阵中的元素,可以使用前缀和来表示子数组或者子矩阵。这道题算是【和为 K 的子数组】的变式,求【和为 K 的整数倍的子数组】,我们先考虑迁移【和为 K 的子数组的解法】。移动窗口的起始和结束指针,依据问题的要求调整窗口的大小,维护窗口的状态(例如窗口内元素的和,最大值,最小值等)。】和【出现的次数】。
2024-09-07 22:38:01
712
原创 对数器打表找规律
小明去商店买苹果,发现只有【能装8个苹果的袋子】和【能装6个苹果的袋子】,节俭的小明只有当自己手上的袋子全部被装满时才会买苹果,现在我想知道小明买苹果需要用掉多少个袋子。简要介绍一下”好串“的概念,”好串“指的是,如果字符串内部有且只有一个长度>=2的回文子串,那么这个串就叫子串。【由于我们有6容量的袋子,所以最终的苹果数就是6的余数 0,1,2,3,4,5。这个题目的要求就是,字符串中的字符只能从 ‘r’ ,’e’ ,’d’ 三个字符中选,用这三个字符拼出长度为n的字符串,求长度为n的好串的个数。
2024-08-02 00:32:51
796
原创 动态规划的空间压缩技巧(降低空间复杂度)
空间压缩再厉害,终究是建立在常规动态规划的思路之上的。在进行空间压缩之后,代码的可读性变得极差,如果直接看这种解法,大多数人会一脸懵逼,算法的优化就是这么一个过程,先写出可读性很好的暴力递归解法,然后尝试利用动态规划技巧优化重叠子问题(降低时间复杂度),再尝试利用空间压缩技巧优化空间复杂度。LeetCode63。
2024-06-14 14:38:11
705
原创 BFS(广度优先遍历)算法框架
如果想找到最短路径的整个路径,即最短路径经过了哪些节点,需要从【target】开始回溯,拿这个【求二叉树的最小深度】举例,我们从终点【target】开始回溯,依着父节点找,一直找到【start】,这条路径就是我们要找的最短路径。输入: deadends = ["8887","8889","8878","8898","8788","8988","7888","9888"], target = "8888"/*//如果此节点不是目标节点,则将此节点的邻接节点推入队列,继续访问下一个节点。
2024-06-12 23:07:56
663
2
原创 动态规划难题:转盘问题
给定一个字符串ring,表示刻在外环上的编码;给定另一个字符串key,表示需要拼写的关键词。您需要算出能够拼写关键词中所有字符的最少步数。最初,ring的第一个字符与12:00方向对齐。您需要顺时针或逆时针旋转ring以使key的一个字符在12:00方向对齐,然后按下中心按钮,以此逐个拼写完 key中的所有字符。旋转ring拼出 key 字符key[i]的阶段中:您可以将ring顺时针或逆时针旋转一个位置,计为1步。旋转的最终目的是将字符串 ring的一个字符与12:00。
2024-06-11 18:29:53
715
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人