
算法学习
文章平均质量分 65
算法学习
优惠券已抵扣
余额抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
九师兄
可免费问问题,可以一次订阅,终身免费问问题。工作多年遇到的问题,与一些总结,注意事项等,有些是源码级别的讲解,同时整个博客是成体系的,里面有很多连接互相连接,问题都是拆开的,能让大家遇到问题的时候方便的解决问题,或者提供思路。也可以单独找我解决问题。
展开
-
【算法】删除连续子数组,返回最长递增子数组
给定一个数组arr,长度为n,最多可以删除一个连续子数组,求剩下的数组,严格连续递增的子数组最大长度比如我们有个数组是然后我们删除一个连续子数组【99,100】,然后剩下的【1,3,4,5,6,7】是一个连续的最长的递增的子数组。如果你的本身是递增的,也可以不删除,就是返回最大的。这里注意我们要删除的子数组也要是连续的。原创 2024-12-27 00:15:00 · 177 阅读 · 0 评论 -
【算法】算法 位运算 合集
0s 表示一串 0,1s 表示一串 1。利用 x ^ 1s = ~x 的特点,可以将一个数的位级表示翻转;利用 x ^ x = 0 的特点,可以将三个数中重复的两个数去除,只留下另一个数。1^1^2 = 2利用 x & 0s = 0 和 x & 1s = x 的特点,可以实现掩码操作。一个数 num 与 mask:00111100 进行位与操作,只保留 num 中与 mask 的 1 部分相对应的位。利用 x | 0s = x 和 x | 1s = 1s 的特点,可以实现设值操作。原创 2024-09-12 00:15:00 · 90 阅读 · 0 评论 -
【算法】在排序数组中查找元素的第一个和最后一个位置
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。原创 2024-09-11 00:15:00 · 88 阅读 · 0 评论 -
【算法】540. 有序数组中的单一元素
给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。请你找出并返回只出现一次的那个数。你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。原创 2024-08-16 00:30:00 · 100 阅读 · 0 评论 -
【算法】744. 寻找比目标字母大的最小字母
给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。原创 2024-08-15 00:30:00 · 193 阅读 · 0 评论 -
【算法】JZ65 不用加减乘除做加法
描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。原创 2024-08-14 00:15:00 · 95 阅读 · 0 评论 -
【算法】求1+2+3+...+n
描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。数据范围:0n≤200进阶: 空间复杂度O(1)O(1)O1,时间复杂度O(n)O(n)On示例1示例2。原创 2024-08-13 00:30:00 · 261 阅读 · 0 评论 -
【算法】约瑟夫环问题
求最后环节点的问题,相对简单一些,可以根据公式计算,也可以模拟实现。描述每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。然后,随机指定一个数 m ,让编号为0的小朋友开始报数。原创 2024-08-11 00:15:00 · 88 阅读 · 0 评论 -
【算法】左旋转字符串,左旋大小大于字符串
如果左移的次数大于自己,相当于左移余数次,所以本次的代码相当于上一次就是多了一次计算真正要移动几次,计算方法如下。这个问题,上面哪个问题限制了左移位置不能大于字符串长度,本问题是不限制。这个不限制,也很好理解,假设我们的数据如下。其他方法,可以修改一下就可以了。那么左移5的话,那么就是。原创 2024-08-10 01:15:00 · 67 阅读 · 0 评论 -
【算法】和为s的两个数字 最小乘积
输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有名对数字的和等于S,输出两个数的乘积最小的.原创 2024-08-09 00:30:00 · 64 阅读 · 0 评论 -
【算法】和为S的连续正数序列
小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列?输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序示例1示例2相似企业真题。原创 2024-08-08 00:30:00 · 66 阅读 · 0 评论 -
【算法】二分查找
int low=0;int hi=n-1;int mid=0;low=mid;原创 2024-08-05 00:45:00 · 65 阅读 · 0 评论 -
【算法】正则匹配、?号和 *号、从左往右尝试模型
判定一个由[a-2]字符构成的宇符串和一个包含?和*通配符的宇符串是否匹配。通配符匹配任意单一字符,“*"匹配任意多个字符包括0个字符。字符串长度不会超过100,字符串不为空。原创 2024-08-02 00:15:00 · 118 阅读 · 0 评论 -
【算法】删除有序链表中的重复元素、保留重复节点的一个
存在一个按升序排列的链表,给你这个链表的头节点 head,请你删除所有重复的元素,。返回同样按升序排列的结果链表。原创 2024-07-17 00:45:00 · 1254 阅读 · 0 评论 -
【算法】JZ30 包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。示例1。原创 2024-07-16 00:30:00 · 637 阅读 · 0 评论 -
【算法】旋转数组的最小数字
描述有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。数据范围:1 ≤ N ,数组中任意元素的值: 0 ≤ 100000要求:空间复杂度:O(1),时间复杂度:O(logn)示例1示例2。原创 2024-07-13 00:30:00 · 83 阅读 · 0 评论 -
【算法】删除有序链表中的重复元素、不保留重复节点
存在一个按升序排列的链表,给你这个链表的头节点 head,请你删除所有重复的元素,使重复元素都删除。返回同样按升序排列的结果链表。相似,但是有一些区别。原创 2024-07-11 00:30:00 · 82 阅读 · 0 评论 -
【算法】青蛙跳台阶、变态跳台阶
题目链接。原创 2024-07-10 00:15:00 · 137 阅读 · 0 评论 -
【算法】青蛙跳台阶
跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。原创 2024-07-09 00:30:00 · 78 阅读 · 0 评论 -
【算法】在 O(1) 时间内删除链表节点
综上,如果进行 N 次操作,那么大约需要操作节点的次数为 N-1+N=2N-1,其中 N-1 表示 N-1 个不是尾节点的每个节点以 O(1) 的时间复杂度操作节点的总次数,N 表示 1 个尾节点以 O(N) 的时间复杂度操作节点的总次数。① 如果该节点不是尾节点,那么可以直接将下一个节点的值赋给该节点,然后令该节点指向下下个节点,再删除下一个节点,时间复杂度为 O(1)。② 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向 null,时间复杂度为 O(N)。原创 2024-07-09 00:30:00 · 450 阅读 · 0 评论 -
【算法】矩形覆盖
要覆盖 2*n 的大矩形,可以先覆盖 2*1 的矩形,再覆盖 2*(n-1) 的矩形;或者先覆盖 2*2 的矩形,再覆盖 2*(n-2) 的矩形。而覆盖 2*(n-1) 和 2*(n-2) 的矩形可以看成子问题。我们可以用 2*1 的小矩形横着或者竖着去覆盖更大的矩形。请问用 n 个 2*1 的小矩形无重叠地覆盖一个 2*n 的大矩形,总共有多少种方法?原创 2024-07-07 00:45:00 · 88 阅读 · 0 评论 -
【算法】二叉树中序遍历的下一个结点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。我们先来回顾一下中序遍历的过程:先遍历树的左子树,再遍历根节点,最后再遍历右子树。所以最左节点是中序遍历的第一个节点。① 如果一个节点的右子树不为空,那么该节点的下一个节点是右子树的最左节点;② 否则,向上找第一个左链接指向的树包含该节点的祖先节点。原创 2024-07-06 00:30:00 · 69 阅读 · 0 评论 -
【算法】根据前序遍历、中序遍历、重建二叉树
然后根据上面一个步骤,我们知道3的右子树是15,20,7,然后把这个当成一个子树的话,在前序遍历中,3后面就是左子树,而我们在中序遍历中知道左子树只有一个值,然后可以在前序遍历中跳过9,之后就全部是右子树,然后这个看成一个子树的话,那么20就又是顶点,然后按照上面推理就可以嘞。首先我们知道,一颗二叉树的前序遍历的第一个值,一定是树的顶节点,然后根据这个值到中序遍历中,找到这个值,然后进行切分,那么左边是这个顶点的左子树所有的数据,右边是这个顶点的右子树所有的值。然后分别对左右子树递归地求解。原创 2024-07-03 00:15:00 · 189 阅读 · 0 评论 -
【算法】求两个有序数组合并后的中位数【重刷】
中位数在统计学中代表一个样本里面的一个值,其可将数值集合划分为相等的上下两部分。原创 2024-06-25 00:30:00 · 137 阅读 · 0 评论 -
【算法】动态规划、机器人移动的不同的路径、动态规划题目的、套路
一个机器人位于一个mxn网格的左上角 (起始点在下图中标记为 “Start”)。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish")。问总共有多少条不同的路径?现在图中是机器人是起点,然后星星是终点,我们要从起点到终点,现在我们反着思考,假设机器人是终点,然后星星是起点,然后从星星到机器人是算不出来的,但是我们可以看最近的。比如第一个格子,如图,在这个位置他只能往左边走,往下面走就路径更长了,往上边走不了,所以这里是1。原创 2024-06-23 11:10:14 · 81 阅读 · 0 评论 -
【算子】不重复字符串子串最长长度
在一个字符串中找到没有重复字符子串中最长的长度。。“owke” 是一个子字符序列但不是一个子字符串。原创 2024-06-22 09:41:39 · 83 阅读 · 0 评论 -
【算法】无序数组,求最小的第K个数、BFPRT算法、斜率优化
在一个无序数组,求最小的第K个数。原创 2024-06-22 00:15:00 · 191 阅读 · 0 评论 -
【算法】重叠矩形,求重叠位置最多的,以及重叠个数
如果两个或者多个矩形有公共区域则认为它们是相互重叠的(不考虑边界和角落)。请你计算出平面内重叠矩形数量最多的地方,有多少个矩形相互重叠。平面内有n个矩形,第i个矩形的左下角坐标为。原创 2024-06-21 00:15:00 · 509 阅读 · 0 评论 -
【算法】找到二叉搜索树中错误的节点
一棵二叉树原本是搜索二叉树,但是其中有两个节点调换了位置,使得这棵二叉树不再是搜索二叉树,请找到这两个错误节点并返回。给定二叉树的头节点 head,返回一个长度为2的二叉树节点类型的数组errs,errs[O]表示一个错误节点,errs[1]表示另一个错误节点。如果在原问题中得到了这两个错误节点,我们当然可以通过交换两个节点的节点值的方式让整棵二叉树重新成为搜索二叉树。但现在要求你不能这么做,而是在结构上完全交换两个节点的位置,请实现调整的函数。原创 2024-06-20 00:30:00 · 53 阅读 · 0 评论 -
【算法】拓扑贡献记录、求二叉树的搜索二叉树、最大拓扑结构
给定一棵二叉树的头节点head,,返回其中最大的且符合搜索二叉树条件的最大拓扑结构的大小。拓扑结构:不是子树,只要能连起来的结构都算。原创 2024-06-08 00:15:00 · 81 阅读 · 0 评论 -
【算法】加油站、距离、油量,如何跑一圈
N个加油站组成一个环形,给定两个长度都是N的非负数组dis[i]假设你有一辆油箱足够大的车,初始时车里没有油。如果车从第i个加油站出发,最终可以回到这个加油站,那么第i个加油站就算良好出发点,否则就不算。请返回长度为N的boolean型数组res,res[i]代表第 i个加油站是不是良好出发点。原创 2024-06-07 01:45:00 · 102 阅读 · 0 评论 -
【算法】LFU缓存替换算法
我们来了一个数据A,然后我们把这个数据放到词频为1的桶里,这个值在桶中是双向链表的结构,我们记录双向链表的头部和尾部。如果此时我们又get了一下D,那么需要先把D从词频为5的桶里移除,因为词频为5的桶里面已经没有数据了,这个桶就可以废弃了,要断开这个桶的双向链接,然后我们把D放到词频为6的桶。比如现在用户get一下操作了,然后B的词频变成2了,然后我们就把原有的B在链表中断掉,然后生成一个词频为2的桶,然后桶与桶的关系也是双向链表进行连接。这样做有什么好处呢?这样的话,我们每次操作都是O(1)的复杂度。原创 2024-06-04 00:15:00 · 158 阅读 · 0 评论 -
【算法】字符串A的子串含有字符串B所有字符的最小长度
给定宇符串str1和str2,求str1的子串中含有str2所有宇符的最小子串长度因为"abc"包含 str2所有的宇符,并且在满足这一条件的str1的所有子串中,"abc"是最短的,返回3。最小包含子串不存在,返回0。原创 2024-06-03 00:45:00 · 322 阅读 · 0 评论 -
【算法】打爆气球 求得分 (难)
我们尝试使用最后打爆的尝试模型,假设我们所有气球都最后打爆,现在有个函数f(L,R),潜台词。L-1位置上的气球一定没有爆炸R+1位置上的气球一定没有爆炸假设我们有数据如下,然后我们f(1,6),我们假设1位置的气球一定没有爆炸,6位置的气球一定没有爆炸。假设我们让1位置的气球最后爆炸,那么我们是不是可以调用f(2,6)?当然可以。因为我们这里的潜台词是1位置的气球一定没有爆炸,7位置的气球一定没有爆炸。此时我们是可以结算的。第二种选择。原创 2024-06-02 08:26:10 · 88 阅读 · 0 评论 -
【算法】子数组异或和最大
给定一个整型数组 arr,其中可能有正、有负、有零,求其中子数组的最大异或和数组只有1个数,所以只有一个子数组,就是这个数组本身,最大异或和为3子数组有很多,但是{-28,-29}这个子数组的异或和为7,是所有子数组中最大的。原创 2024-06-01 00:15:00 · 128 阅读 · 0 评论 -
【算法】斜率优化、正数分裂、动态规划优化
给定一个正数n,求裂开的方法数。原创 2024-05-31 00:30:00 · 65 阅读 · 0 评论 -
【算法】范围尝试模型、字符串全部切分成回文子串
给定一个字符串str,返回把str全部切成回文子串的最小分割数。原创 2024-05-30 00:30:00 · 166 阅读 · 0 评论 -
【算法】范围尝试模型、已有字符串添加最少字符使其成为回文字符串
给定一个字符串str,如果可以在str的任意位置添加宇符,请返回在添加字符最少的情況下,让str整体都是回文字符串的一种结果。总之,只要添加的字符数最少,返回其中一种结果即可。原创 2024-05-27 18:12:21 · 884 阅读 · 0 评论 -
【算法】范围尝试模型、求字符串中的最长回文子序列
给定一个字符串str,求最长的回文子序列。注意区分子序列和子串的不同。原创 2024-05-24 00:30:00 · 64 阅读 · 0 评论 -
【算法】N个人坐船,求最少需要的船的个数
给定一个数组arr,长度为N且每个值都是正数,代表N个人的体重。再给定一个正数Iimit,代表一艘船的载重。返回如果同时让这N个人过河最少需要几条船。原创 2024-05-23 00:30:00 · 130 阅读 · 0 评论