![](https://img-blog.csdnimg.cn/6ac2dea23bf841a88f0546a84e7713de.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
剑指offer
文章平均质量分 55
以c/c++的方式写LeetCode上剑指offer的题目,其中的题解有部分是参考leetcode上的大佬的解法的。但对于题目的具体解读和代码的分析均是原创
桜キャンドル淵
凑个整,就1024吧
展开
-
【LeetCode】【剑指offer】【表示数值的字符串】
链接:https://leetcode.cn/problems/biao-shi-shu-zhi-de-zi-fu-chuan-lcof。s 仅含英文字母(大写和小写),数字(0-9),加号 '+' ,减号 '-' ,空格 ' ' 或者点 '.'。至少一位数字,后面跟着一个点 '.' ,后面再跟着至少一位数字。(可选)一个 'e' 或 'E' ,后面跟着一个 整数。(可选)一个符号字符('+' 或 '-')(可选)一个符号字符('+' 或 '-')一个点 '.' ,后面跟着至少一位数字。转载 2022-08-23 17:50:28 · 142 阅读 · 0 评论 -
【LeetCode】【剑指offer】【机器人的运动范围】
这里我们的思路就是从一个结点出发(0,0),然后递归遍历其右边的结点和下面的结点,也就是向着右下方遍历。或者采用广度优先遍历的方法。原创 2022-08-23 17:05:01 · 146 阅读 · 0 评论 -
【LeetCode】【剑指offer】【二叉树的最近公共祖先(二)】
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1。输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4。例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]原创 2022-08-23 15:51:28 · 62 阅读 · 0 评论 -
【LeetCode】【剑指offer】【二叉搜索树的最近公共祖先(一)】
这道题我们的思路就是需要注意这是一棵二叉搜索树,如果当前root结点的数据比这两个要查找的结点都要小,比方说我们当前的是root是6,我们要查找的结点是7和9,那么我们就需要检查root结点的右子树。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8。输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4。解释: 节点 2 和节点 8 的最近公共祖先是 6。来源:力扣(LeetCode)原创 2022-08-23 15:02:58 · 49 阅读 · 0 评论 -
【LeetCode】【剑指offer】【把字符串转换成整数】
当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;链接:https://leetcode.cn/problems/ba-zi-fu-chuan-zhuan-huan-cheng-zheng-shu-lcof。注意:假如该字符串中的第一个非空格字符不是一个有效整数字符、字符串为空或字符串仅包含空白字符时,则你的函数不需要进行转换。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。输入: "-91283472332"原创 2022-08-23 12:19:30 · 48 阅读 · 0 评论 -
【LeetCode】【剑指offer】【构建乘积数组】
n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…我们转换一下思路,求除了当前位置的元素的相乘结果就是求当前元素左侧的所有元素的相乘结果乘上当前元素右侧的所有元素的相乘结果。链接:https://leetcode.cn/problems/gou-jian-cheng-ji-shu-zu-lcof。输出: [120,60,40,30,24]输入: [1,2,3,4,5]原创 2022-08-23 11:34:20 · 164 阅读 · 0 评论 -
【LeetCode】【剑指offer】【不用加减乘除做加法】
对于我们的异或运算,我们知道如果对应的二进制位是不同的话就是1,相同的话就是0,这和我们的相加的思路非常像,也就是说0+1=1,而0^1=1,而1+1=10,而1^1=0也就是说使用异或可以保持进位前的结果。这里我们也就得到了我们的结果1010(因为没有进位,所以我们没有进位的计算得出的结果就是我们的最终结果),转换成十进制就是10。然后我们想让我们的进位和没有进位的数据相加,我们再次使用上面的方法,将1000与0010按位与,得到0,也就是没有进位。这里的10中的两个1全部都是由进位造成的。原创 2022-08-23 10:31:18 · 102 阅读 · 0 评论 -
【LeetCode】【剑指offer】【求1+2+…+n】
在下面的做法中,我们设置了一个全局的sum用来存放我们累加的结果,i是我们每一的加数。在我们下面的solution类中,我们定义了一个a[n],也就是构造n次,每一次的构造都会调用sum+=i和++i的方法,所以就能够实现我们的结果。求 1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?不同的是,这里我们递归的条件变成了n&&,也就是说如果n等于0就会停止递归,并且返回。但是上面的方法不符合要求,我们可以使用下面的做法。原创 2022-08-23 09:50:43 · 89 阅读 · 0 评论 -
【LeetCode】【剑指offer】【股票的最大利润】
对于上面的股票价格,我们在1的时候买入,然后不断往后比较最大额差价,当股票价格为6的时候达到了最大的差价,于是我们将6-1=5返回。解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5。链接:https://leetcode.cn/problems/gu-piao-de-zui-da-li-run-lcof。对于买股票,我们想要获得更高的价格,我们就需要以更低的价格买入,以更高的价格卖掉。输入: [7,1,5,3,6,4]原创 2022-08-22 17:47:24 · 233 阅读 · 0 评论 -
【LeetCode】【剑指offer】【圆圈中最后剩下的数字】
这一轮我们被kill的元素个数是1个,然后我们将这个元素补回到当前所有数据的右边,(3->4->5->6->7->8->9->0->1->2)然后循环右移m个人,我们就能得到上一轮(0->1->2->3->4->5->6->7->8->9)的情况,我们这是发现3在3的位置。这一轮我们被kill的元素个数是1个,然后我们将这个元素补回到当前所有数据的右边,(3->4->6->7->9->0->1)然后循环右移m个人,我们就能得到上一轮(9->0->1>3->4->6->7)的情况,我们这是发现3在3的位置。原创 2022-08-22 17:32:58 · 144 阅读 · 0 评论 -
【LeetCode】【剑指offer】【扑克牌中的顺子】
2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。这道题我们的手牌中可能有大王和小王,所以我们只需要满足条件当前5张牌中的最大值减去最小值小于5.并且除了大王和小王,这5张牌中没有重复的牌,就能够判断我们的手牌是不是顺子了。链接:https://leetcode.cn/problems/bu-ke-pai-zhong-de-shun-zi-lcof。数组的数取值为 [0, 13] .输入: [1,2,3,4,5]输入: [0,0,1,2,5]原创 2022-08-22 16:07:42 · 76 阅读 · 0 评论 -
【LeetCode】【剑指offer】【n个骰子的点数】
我们不妨认为我们的数据是以上面这种形式产生的, 所以我们只需要将我们上一次骰子的结果除以6然后再一个新的长度为5*i+1的容器中,从头开始遍历我们上一次的骰子的结果个数次,将我们的数据按照上面的形式相加,然后迭代n-1轮,就能够得到我们想要的结果。而我们两个 骰子产生的结果分别为2,3,4,5,6,7,8,9,10,11,12,7的概率与一个骰子中的1,2,3,4,5,6的概率有关。6的概率与一个骰子中的1,2,3,4,5的概率有关。8的概率与一个骰子中的2,3,4,5,6的概率有关。原创 2022-08-22 15:34:08 · 154 阅读 · 0 评论 -
【LeetCode】【剑指offer】【队列的最大值(二)】
那么在出队的时候,如果9出队了,我们的max_element中的9也要同时出队。但在2,3,2出队的时候,我们的max_element中的元素不用出队,因为7依旧是原来的队列中的最大值,只有当原队列中的7也出队的同时,我们的max_element的队首的7也要出队。那么我们的max_element双端队列就是9-7-6-2,如果新插入的元素比之前的大的话,将原来的队列中比新插入的元素小的数据全部都删除,最终就能得到我们这样的一个双端队列,这样如果要获取最大值就直接返回我们队首的元素就行了。原创 2022-08-22 12:37:38 · 100 阅读 · 0 评论 -
【LeetCode】【剑指offer】【滑动窗口的最大值(一)】
给定一个数组 nums 和滑动窗口的大小 k,请找出所有滑动窗口里的最大值。示例:输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]解释:滑动窗口的位置 最大值提示:你可以假设 k 总是有效的,在输入数组 不为空 的情况下,1 ≤ k ≤ nums.length。来源:力扣(LeetCode)原创 2022-08-22 11:26:14 · 1000 阅读 · 0 评论 -
【LeetCode】【剑指offer】【左旋转字符串】
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。我们就需要先翻转左边的两个“ab”reverse(s.begin(),s.begin()+2)(注意这里的右边界是取不到的)也就是说将我们要反转的k个翻转,然后将剩下的k+1到末尾的部分也翻转,最后整个字符串再全部翻转。这里我们需要注意的是翻转的函数的左值是包含在内的,右边界是不包含在内的。假设我们要翻转的是"abcdefghi",k=2。原创 2022-08-21 22:12:33 · 50 阅读 · 0 评论 -
【LeetCode】【剑指offer】【翻转单词顺序(一)】
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。例如输入字符串"I am a student. ",则输出"student. a am I"。解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。输出: "world!我们将每一个单词反转得到的结果就是"原创 2022-08-21 21:44:24 · 66 阅读 · 0 评论 -
【LeetCode】【剑指offer】【和为s的连续正数序列(二)】
每一次找到满足条件的数据范围,就循环添加到我们的tmp容器中,然后将我们的tmp容器添加到我们的result容器中。然后计算left到right的数据的时候就直接用公式(left+right)*(right-left+1)/2。然后因为题目要求最少为两个数,所以我们的right原创 2022-08-21 21:14:59 · 122 阅读 · 0 评论 -
【LeetCode】【剑指offer】【和为s的两个数字】
其思路就是首相让我们的left指针指向0号元素,right指针指向我们最后一个元素,然后将我们left和right指向的数据的数值相加,得到我们的sum值,如果我们的sum值大于了target,我们就将我们的right--,也就是将我们的整体数据和减小。我们可以采用下面这种进阶的方法,就是先遍历一遍我们的数据,将其数据本身和数量构建一个map映射,然后再次遍历这些数据,每遍历到一个数据,就从map映射中查看时候有target减去当前值的数据存在。著作权归领扣网络所有。输出:[2,7] 或者 [7,2]原创 2022-08-21 20:45:12 · 97 阅读 · 0 评论 -
【LeetCode】【剑指offer】【数组中数字出现的次数(二)】
从上面这张表格中,我们可以很清晰地看出从右往左第三位全部相加是3,第二位全部相加是3,第一位全部相加是4,然后我们分别对这些相加的结果取模,就会得到0,0,1, 将这三位拼接起来就是001,也就是我们上面仅出现了一次的数据元素1。上面是我们的样例数据,从中我们可以观察到就1出现了一次,其余的3和4都出现了三次,此时我们分别将二进制位从右往左数第三位的全部数据相加,第二位的全部数据相加,第一位的全部数据相加。输入:nums = [9,1,7,9,7,9,7]输入:nums = [3,4,3,3]原创 2022-08-21 12:04:27 · 103 阅读 · 0 评论 -
【LeetCode】【剑指offer】【数组中数字出现的次数(一)】
然后我们分别将每一组数据进行异或操作,1,3,3异或得到的结果是1(异或会将相同的元素抵消掉),另一组是5,这样我们就找到了这两个落单的数据1,5.然后我们将全部的数据分成两组,一组是当前这个x位的位置为1的组,另一组是当前这个x位为0的组。第一种方法就是采用我们的map映射,先统计全部的元素的出现次数,然后将出现次数为1的数据封装到一个vector中并且返回这个容器。输入:nums = [1,2,10,4,1,4,3,3]所以这时候我们其实得到的是那两个落单的数字的异或的结果。为什么要找这个第一个1呢?原创 2022-08-21 11:32:11 · 50 阅读 · 0 评论 -
【LeetCode】【剑指offer】【平衡二叉树(二)】
与此不同的是我们需要在判断当前结点的左右子树的深度是否原创 2022-08-21 10:56:14 · 1023 阅读 · 0 评论 -
【LeetCode】【剑指offer】【二叉树的深度(一)】
或者采用的我们广度优先遍历的算法,先将根节点入队列,然后记录当前队列的元素个数,也就是当前层的元素个数,然后不断地将队首的元素出队,然后将队首结点的左右结点入队,直到这一层的数据全部都被遍历完成。然后让我们的统计层数的计数器++。输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。我们可以采用深度优先遍历的方法,如果当前结点为nullptr就返回0,如果不是的话,就返回左子树和右子树中更深的那一棵树的深度。返回它的最大深度 3。原创 2022-08-21 10:38:07 · 103 阅读 · 0 评论 -
【LeetCode】【剑指offer】【二叉搜索树的第k大节点】
但是我们这里想到的到的是第k大的数据,所以我们需要从后往前遍历,也就是说我们需要先访问root->right,再访问root,最后访问root->left。链接:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof。输入: root = [5,3,6,2,4,null,null,1], k = 3。输入: root = [3,1,4,null,2], k = 1。给定一棵二叉搜索树,请找出其中第 k 大的节点的值。原创 2022-08-21 10:15:08 · 122 阅读 · 0 评论 -
【LeetCode】【剑指offer】【0~n-1中缺失的数字】
按照我们上面的判断,第一次二分的时候,我们的0和1对应的数据其实已经检查过都是符合要求的,而我们最终的right返回的数据恰好就是在左边已经检查过的符合要求的数据的最后一位,而我们的left刚好就是缺失的位置。由于0到n-1的数据应该都是要存在在容器中的,所以我们将容器中的所有数据都进行异或操作^,然后再将这个异或之后的结果跟0到n-1的全部数据都进行异或。但是这个时候1位置对应的数据刚好是1,也就是说1位置以及1左边的全部元素都是没有空缺的,所以我们将我们的查找范围限定到我们的右半区域。原创 2022-08-21 09:41:40 · 113 阅读 · 0 评论 -
【LeetCode】【剑指offer】【在排序数组中查找数字(一)】
当前的mid=0,0对应的元素为1,比我们的目标查询元素要小,所以我们的left=mid+1=1,由于我们上述得出的较大的索引下标位置是所有目标查询元素的下一个位置,我们的较小的索引下标位置时所有的目标查询元素的前一个位置,所以在大索引下标减去小索引下标,还需要-1才能得出我们的最终目标查询元素的个数。所以我们的mid变成了4,然后4对应的元素为6,大于了我们目标查询的元素,所以我们的right=mid-1,也就是3,right原创 2022-08-20 18:45:29 · 116 阅读 · 0 评论 -
【LeetCode】【剑指offer】【两个链表的第一个公共节点】
就是让p1走完A链表之后,再走B链表前面的[5,0],让p2走完B链表之后,再走A链表前面的[4],也就是说,我们的p1,p2其实都会将[4]和[5,0]部分遍历一遍,最终就同时到达了重合的链表的位置。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3。著作权归领扣网络所有。原创 2022-08-20 17:26:55 · 88 阅读 · 0 评论 -
【LeetCode】【剑指offer】【数组中的逆序对】
这里我们的left小于right,同时也说明right到mid之间的数据都是小于left当前指向的数据的,所以我们需要给我们最终的逆序数的统计个数加上right-(mid+1),其中right=5,mid=(0+7)/2=3,也就是5-(3+1)=1也就是有一个逆序对,也就是3在2前面这一组逆序对。这里我们对比left和right的位置的数据,left的位置比较小,所以我们将left位置的数据拷贝到我们的tmp中。这里我们的right指向的数据比left小,我们将right中的数据拷贝到tmp中。原创 2022-08-20 16:04:54 · 155 阅读 · 0 评论 -
【LeetCode】【剑指offer】【第一个只出现一次的字符】
这道题我们的思路就是创建一个容量为26的辅助整形数组,用来存储我们每一个字符串出现的次数。当我们从前向后遍历字符串中的每一个字母,并且将统计到的字母-'a'之后对应到我们的整形数组中的值++链接:https://leetcode.cn/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof。然后我们再次从前向后遍历字符串中的每一个字母,当统计到当前字母出现的次数为1(在整形字符串中的对应位置的值) ,就直接将这个字母返回。输入:s = "abaccdeff"原创 2022-08-20 11:17:21 · 95 阅读 · 0 评论 -
【LeetCode】【剑指offer】【丑数】
然后我们分别用2乘two指针指向的容器中的位置5的数字, 3乘two指针指向的容器中的位置3的数字,5乘two指针指向的容器中的位置2的数字。然后我们分别用2乘two指针指向的容器中的位置2的数字, 3乘two指针指向的容器中的位置1的数字,5乘two指针指向的容器中的位置1的数字。然后我们分别用2乘two指针指向的容器中的位置3的数字, 3乘two指针指向的容器中的位置2的数字,5乘two指针指向的容器中的位置1的数字。从中我们挑选出最小值2,并将其压入vector中,然后将我们two的指针++原创 2022-08-20 11:04:16 · 109 阅读 · 0 评论 -
【LeetCode】【剑指offer】【最长不含重复字符的子字符串】
链接:https://leetcode.cn/problems/zui-chang-bu-han-zhong-fu-zi-fu-de-zi-zi-fu-chuan-lcof。此时虽然我们当前的不含重复字的最大字符串长度为2,但是之前有最大的不含重复字的最大字符串长度为3。此时在我们的map中a对应的数字为1 ,此时最大的不含重复字的最大字符串长度为1。a->1,b->1,c->1 ,此时最大的不含重复字的最大字符串长度为3。a->1 ,b->1 ,此时最大的不含重复字的最大字符串长度为2。原创 2022-08-20 09:52:36 · 91 阅读 · 0 评论 -
【LeetCode】【剑指offer】【礼物的最大价值】
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。链接:https://leetcode.cn/problems/li-wu-de-zui-da-jie-zhi-lcof。这里我们就需要判断对于5的位置,是跟上方的4相加更大,还是跟左边的2相加更大,显然我们选择5+4=9。按照每一行的顺序,逐行遍历,如果我们的行坐标是0的话,其数据不可能从上方加过来,只能从左边加过来。对于最后的1,跟左边的11相加比跟上面的10更大,所以我们选择跟11相加,得到我们的最终结果12。原创 2022-08-19 18:54:25 · 61 阅读 · 0 评论 -
【LeetCode】【剑指offer】【把数字翻译成字符串】
请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。这道题跟我们青蛙跳台阶的问题是差不多的,我们都可以向后跳1格,或者是2格,不同的是我们需要加上一些判断条件来判断我们跳入的格子中的数据是否可以被翻译,从而约束我们的统计结果。链接:https://leetcode.cn/problems/ba-shu-zi-fan-yi-cheng-zi-fu-chuan-lcof。解释: 12258有5种不同的翻译,分别是"bccfi", "bwfi", "bczi", "mcfi"和"mzi"原创 2022-08-19 17:15:38 · 141 阅读 · 0 评论 -
【LeetCode】【剑指offer】【把数组排成最小的数】
链接:https://leetcode.cn/problems/ba-shu-zu-pai-cheng-zui-xiao-de-shu-lcof。输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。我们需要比较"301"和"103"谁更小,哪一种情况更小,我们就将哪一个数据排在前面。所以我们下面的第一种写法就是改变了冒泡排序的规则,从而形成了我们的题解。假设数据"30"和数据"1"我们要决定谁排在谁的前面。输入: [3,30,34,5,9]输入: [10,2]原创 2022-08-19 16:19:36 · 249 阅读 · 0 评论 -
【LeetCode】【剑指offer】【数字序列中某一位的数字】
数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。链接:https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof。著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。请写一个函数,求任意第n位对应的数字。来源:力扣(LeetCode)原创 2022-08-19 15:21:08 · 76 阅读 · 0 评论 -
【LeetCode】【剑指offer】【1~n整数中1出现的次数】
但是对于我们当前的2,其是大于1的,所以还有1000个1,所以千位出现1的次数为1*1000+1000。但是对于我们当前的3,其是大于1的,所以还有100个1,所以百位出现1的次数为12*100+1*100次。但是对于我们当前的十位4,其是大于1的,所以还有10个1,所以十位出现1的次数为123+1*10次。如果当前位等于1的话,就需要在前面循环统计的基础上再加上该位后面的位数组成的数据再加上1(参考上面的万位上的1个数的肌酸)如果当前位等于0,也就是小于1的话,就只需要统计循环统计的部分就可以了。原创 2022-08-19 12:10:55 · 249 阅读 · 0 评论 -
【LeetCode】【剑指offer】【连续子数组的最大和】
在判断以1结尾的最大子数组的时候,我们得知在1之前的最大子数组是-2,所以我们用max(1+(-2),1),之后发现如果1加上了之前的最大子数组反而会变小,所以我们就不加上之前的最大子数组了。同时我们发现以1结尾的最大子数组是1,比之前的-2更大,所以我们用一个max_set来记录我们当前已经遍历过的以其作为结尾的最大子数组的和值。对于-1来说,从max(-1+4,-1)得知,-1加上之前的最大子数组可以得到更大的子数组。对于1来说,从max(1+5,1)得知,1加上之前的最大子数组可以得到更大的子数组。原创 2022-08-19 10:44:50 · 113 阅读 · 0 评论 -
【LeetCode】【剑指offer】【数据流中的中位数】
如果这时候新插入一个数据(当前情况是小根堆的size和大根堆的size相等),我们这里采取的策略是保持大根堆的size>=小根堆的size。也就是将我们新插入的元素添加到我们的大根堆中,然后再将大根堆堆顶的元素放入我们的小根堆中,从而让我们的两个堆的size重新实现了平衡。对于这道题原本想采用下面的做法,但是这样做的话,每一次排序的开销非常大,并且官方的测试用例中有非常多次的插入和查询中位数的操作,所以下面的代码在面对非常庞大的测试用例的时候就会超时。著作权归领扣网络所有。[2,3,4] 的中位数是 3。.原创 2022-08-19 09:46:06 · 55 阅读 · 0 评论 -
【LeetCode】【剑指offer】【最小的k个数】
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]限制:来源:力扣(LeetCode)链接:https://leetcode.cn/problems/zui-xiao-de-kge-shu-lcof著作权归领扣网络所有。...原创 2022-08-18 20:22:40 · 88 阅读 · 0 评论 -
【LeetCode】【剑指offer】【数组中出现次数超出一半的数字】
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2限制:1原创 2022-08-18 18:56:25 · 284 阅读 · 0 评论 -
【LeetCode】【剑指offer】【字符串的排列】
一开始我是想采用回朔法,将全部的情况都列举出来,然后将不符合要求的筛选掉,但是在枚举情况较小的时候这种算法是没有问题的,但是一旦给的字符串长度为5个以上,就会超时。下面是我最初始的写法。链接:https://leetcode.cn/problems/zi-fu-chuan-de-pai-lie-lcof。输出:["abc","acb","bac","bca","cab","cba"]商业转载请联系官方授权,非商业转载请注明出处。输入一个字符串,打印出该字符串中字符的所有排列。这是对于官方的代码的解读。...原创 2022-08-18 18:09:08 · 96 阅读 · 0 评论