![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
邵政道
这个作者很懒,什么都没留下…
展开
-
约瑟夫环问题
最近为了教学妹C语言,重新写了一下约瑟夫环问题。结合代码讲解一下设计思路。题目描述:约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知 num 个人(以编号1,2,3…num分别表示)围坐在一张圆桌周围。从编号为 1 的人开始报数,数到 k 的那个人出圈;他的下一个人又从 1 开始报数,数到 k 的那个人又出圈;依此规律重复下去,直到剩余最后一个胜利者。代码设计思路:写一个传入两个参数的函数,num表示参与游戏的总人数,k表示数到k的幸运儿惨遭淘汰。核心的循环代码为: for (i = 0;原创 2021-08-18 20:12:28 · 197 阅读 · 0 评论 -
[leetcode日记]209. 长度最小的子数组
题目给定一个含有 n 个正整数的数组和一个正整数 s ,找出该数组中满足其和 ≥ s的长度最小的连续子数组,并返回其长度。如果不存在符合条件的连续子数组,返回 0。示例:输入: s = 7, nums = [2,3,1,2,4,3] 输出: 2 解释: 子数组 [4,3] 是该条件下的长度最小的连续子数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-size-subarray-sum著作权归领扣网络所有。商业转载请联系原创 2020-06-28 09:22:41 · 179 阅读 · 0 评论 -
[leetcode日记]16.最接近的三数之和
题目给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target最接近。返回这三个数的和。假定每组输入只存在唯一答案。示例:输入:nums = [-1,2,1,-4], target = 1输出:2解释:与 target 最接近的和是 2 (-1 + 2 +1 = 2) 。提示:3 <= nums.length <= 10^3-10^3 <= nums[i] <= 10^3-10^4 <原创 2020-06-24 09:14:24 · 135 阅读 · 0 评论 -
[leetcode日记]67.二进制求和
题目给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1” 输出: “100” 示例 2:输入: a = “1010”, b = “1011” 输出: “10101”提示:每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。 1 <= a.length, b.length <= 10^4 字符串如果不是 “0”,就都不含前导零。来源:力扣(LeetCode) 链接:https://lee原创 2020-06-23 08:53:13 · 178 阅读 · 0 评论 -
[leetcode日记]101.对称二叉树
题目给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的:进阶:你可以运用递归和迭代两种方法解决这个问题吗?来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/symmetric-tree著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。分析如果一个树的左子树与右子树镜像对称,那么这个树是对称的。原创 2020-05-31 09:04:23 · 187 阅读 · 0 评论 -
[leetcode日记]84.柱状图中的最大矩形
题目给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为 [2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为 10 个单位。示例:输入: [2,1,5,6,2,3] 输出: 10来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/largest-rectangle-in-h原创 2020-05-30 09:44:40 · 174 阅读 · 0 评论 -
[leetcode日记]974.和可被K整除的子数组
题目给定一个整数数组 A,返回其中元素之和可被 K 整除的(连续、非空)子数组的数目。示例:输入:A = [4,5,0,-2,-3,1], K = 5 输出:7 解释: 有 7 个子数组满足其元素之和可被 K = 5 整除: [4,5, 0, -2, -3, 1], [5], [5, 0], [5, 0, -2, -3], [0], [0, -2, -3], [-2, -3]提示:1 <= A.length <= 30000-10000 <= A[i] <= 10000原创 2020-05-27 17:35:23 · 196 阅读 · 0 评论 -
[leetcode日记]287.寻找重复数
题目给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2] 输出: 2示例 2:输入: [3,1,3,4,2] 输出: 3说明:1.不能更改原数组(假设数组是只读的)。2.只能使用额外的 O(1) 的空间。3.时间复杂度小于 O(n2) 。4.数组中只有一个重复的数字,但它可能不止重复出现一次。分析这题目方法不少,但是满足题目原创 2020-05-26 18:43:47 · 143 阅读 · 0 评论 -
[leetcode日记]4.寻找两个正序数组中的中位数
题目给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3] nums2 = [2]则中位数是 2.0 示例 2:nums1 = [1, 2] nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5来源:力扣(LeetCode)链接:https://leetcode-c原创 2020-05-24 11:40:12 · 118 阅读 · 0 评论 -
[leetcode日记]76.最小覆盖子串
题目给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字符的最小子串。示例:输入: S = “ADOBECODEBANC”, T = “ABC” 输出: “BANC” 说明:如果 S 中不存这样的子串,则返回空字符串 “”。 如果 S 中存在这样的子串,我们保证它是唯一的答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-window-substring著作权归领扣网络所有。商业转载请联系官方授原创 2020-05-23 13:05:03 · 130 阅读 · 0 评论 -
[leetcode日记]5.最长回文子串
这题我以前做过,学会了马拉车算法(技巧性很强,很难有其它地方应用,所以面试基本不会做要求)。着重注意一下动态规划算法的思想。题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad” 输出: “bab” 注意: “aba” 也是一个有效答案。 示例 2:输入: “cbbd” 输出: “bb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindrom转载 2020-05-21 08:17:05 · 190 阅读 · 0 评论 -
[leetcode日记]1371.每个元音包含偶数次的最长字符串
题目给你一个字符串 s ,请你返回满足以下条件的最长子字符串的长度:每个元音字母,即 ‘a’,‘e’,‘i’,‘o’,‘u’,在子字符串中都恰好出现了偶数次。示例 1:输入:s = “eleetminicoworoep” 输出:13 解释:最长子字符串是 “leetminicowor” ,它包含 e,i,o各 2 个,以及 0 个 a,u 。 示例 2:输入:s = “leetcodeisgreat” 输出:5 解释:最长子字符串是 “leetc” ,其中包含 2 个 e 。 示例 3:输入原创 2020-05-20 09:55:54 · 298 阅读 · 0 评论 -
[leetcode日记]680.验证回文字符Ⅱ
题目给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: “aba” 输出: True 示例 2:输入: “abca” 输出: True 解释: 你可以删除c字符。 注意:字符串只包含从 a-z 的小写字母。字符串的最大长度是50000。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-palindrome-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。分析这题不原创 2020-05-19 08:50:34 · 192 阅读 · 0 评论 -
[leetcode日记]152.乘积最大子数组
题目给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。示例 1:输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6。 示例 2:输入: [-2,0,-1] 输出: 0 解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-subarray著作权归领原创 2020-05-18 09:59:08 · 147 阅读 · 0 评论 -
[leetcode日记]25.K个一组翻转链表
题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而原创 2020-05-16 09:19:03 · 132 阅读 · 0 评论 -
[leetcode日记]102:二叉树层序遍历
题目给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7] ]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-level-ord原创 2020-05-13 14:55:21 · 109 阅读 · 0 评论 -
[leetcode日记]155.最小栈
题目设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。push(x) —— 将元素 x 推入栈中。 pop() —— 删除栈顶的元素。 top() —— 获取栈顶元素。 getMin() ——检索栈中的最小元素。示例:输入: [“MinStack”,“push”,“push”,“push”,“getMin”,“pop”,“top”,“getMin”][[],[-2],[0],[-3],[],[],[],[]]输出: [null,null,null,null原创 2020-05-12 19:32:10 · 105 阅读 · 0 评论 -
[leetcode日记]50.Pow(x,n)
题目实现 pow(x, n) ,即计算 x 的 n 次幂函数。示例 1:输入: 2.00000, 10 输出: 1024.00000 示例 2:输入: 2.10000, 3 输出: 9.26100 示例 3:输入: 2.00000, -2 输出: 0.25000 解释: 2-2 = 1/22 = 1/4 = 0.25 说明:-100.0 < x < 100.0 n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。来源:力扣(LeetCode) 链接:htt原创 2020-05-11 09:45:29 · 178 阅读 · 0 评论 -
[leetcode日记]236.二叉树的最近公共祖先
题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 输出: 3 解释: 节点 5和原创 2020-05-10 21:19:11 · 120 阅读 · 0 评论 -
[leetcode日记]69.x的平方根
今天的每日一题比较……奇特。题目实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4 输出: 2 示例 2:输入: 8 输出: 2 说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/sqrtx著作权归领扣网络所有。商业转载请联系官方授权转载 2020-05-09 11:03:18 · 215 阅读 · 0 评论 -
[leetcode日记]221.最大正方形
题目在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入:1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0输出: 4来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximal-square著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出...原创 2020-05-08 12:11:25 · 208 阅读 · 0 评论 -
[leetcode日记]572.另一个子树
题目给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1: 给定的树 s: 3 / \ 4 5 / \ 1 2 给定的树 t: 4 / \ 1 2 返回 true,因为 t 与 s 的一个子树...原创 2020-05-07 17:28:17 · 105 阅读 · 0 评论 -
[leetcode日记]983.最低票价
题目在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元; 一张为期七天的通行证售价为 costs[1] 美元; 一张为期三十天的通行证售价为costs[2] 美元。 通行证允许数天无限制的旅行。...原创 2020-05-06 10:02:35 · 150 阅读 · 0 评论 -
[leetcode日记]98.验证二叉搜索树
目录题目分析方法一代码:方法一运行结果方法二代码方法二运行结果尾巴题目给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:[2,1,3]输出: true示例 2:输入为: [5,1,4,null,null,3,6]。...原创 2020-05-05 11:13:06 · 183 阅读 · 0 评论 -
[leetcode日记]45.跳跃游戏Ⅱ
题目给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。示例:输入: [2,3,1,1,4] 输出: 2 解释: 跳到最后一个位置的最小跳跃数是 2。从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。 说明:假设你总是可以到达数组的最后一个位置。...原创 2020-05-04 09:09:26 · 165 阅读 · 0 评论 -
【leetcode日记】53.最大子序和
题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。 进阶:如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。来源:力扣(LeetCode) 链接:https://leetco...原创 2020-05-03 17:42:31 · 157 阅读 · 0 评论 -
[leetcode日记]3.无重复字符的最长子串
题目给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2:输入: “bbbbb” 输出: 1 解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。 示例 3:输入: “pwwkew” 输出: 3 解释: 因为无重复字符的最长子串是 “w...原创 2020-05-02 10:18:14 · 138 阅读 · 0 评论 -
[leetcode日记]44.通配符匹配
今天的每日一题是21.合并两个有序链表。5min就过了,90%+100%.换了递归做居然也是这个结果,感觉写博客也没什么意思,所以我就又随机选了一道。题目给定一个字符串 (s) 和一个字符模式 § ,实现一个支持 ‘?’ 和 ‘*’ 的通配符匹配。‘?’ 可以匹配任何单个字符。 ‘*’ 可以匹配任意字符串(包括空字符串)。 两个字符串完全匹配才算匹配成功。说明:s 可能为空,且只包含从...原创 2020-05-01 13:20:09 · 365 阅读 · 1 评论 -
[leetcode日记]202.快乐数
题目编写一个算法来判断一个数 n 是不是快乐数。「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。示例:输入:19 输出:true 解释:12 + 92 = 8282...原创 2020-04-30 12:15:25 · 239 阅读 · 0 评论 -
[leetcode日记]1095.在山脉中寻找目标
自己给自己想的方法取了名字,叫做“盲人爬山”hhhhh题目(这是一个 交互式问题 )给你一个 山脉数组 mountainArr,请你返回能够使得 mountainArr.get(index) 等于 target 最小 的下标index 值。如果不存在这样的下标 index,就请返回 -1。何为山脉数组?如果数组 A 是一个山脉数组的话,那它满足如下条件:首先,A.length &g...原创 2020-04-29 14:17:01 · 160 阅读 · 0 评论 -
【leetcode日记】面试题56-数组中出现的数字次数
题目一个整型数组 nums里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6] 输出:[1,6] 或 [6,1] 示例 2:输入:nums = [1,2,10,4,1,4,3,3] 输出:[2,10] 或 [10,2]限制:2 <= nums <= 1...原创 2020-04-28 12:40:02 · 231 阅读 · 0 评论 -
[leetcode日记]33.搜索旋转排列数组
题目假设按照升序排序的数组在预先未知的某个点上进行了旋转。( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 。你可以假设数组中不存在重复的元素。你的算法时间复杂度必须是 O(log n) 级别。示例 1:输入: nums = [4,5,6,7,0,1,2], ...原创 2020-04-27 17:33:10 · 133 阅读 · 0 评论 -
【leetcode日记】23.合并k个链表
题目合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入: [ 1->4->5, 1->3->4, 2->6 ] 输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/me...原创 2020-04-26 11:58:03 · 134 阅读 · 0 评论 -
[leetcode日记]46.全排列
真是巧合,昨天算法课刚上完全排列、八皇后一类的问题,今天leetcode的每日一题就安排上了。本来以为自己可秒此题,写写还是有一些bug。先来看题目:给定一个 没有重复 数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ]来源:力扣(Lee...原创 2020-04-25 10:53:57 · 159 阅读 · 0 评论 -
[leetcode日记]面试题51-数组中的逆序对
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。示例 1:输入: [7,5,6,4] 输出: 5限制:0 <= 数组长度 <= 50000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lco...原创 2020-04-24 11:13:29 · 166 阅读 · 0 评论 -
[leetcode日记]面试题08.11硬币
硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5 输出:2 解释: 有两种方式可以凑成总金额: 5=5 5=1+1+1+1+1 示例2:输入: n = 10 输出:4 解释: 有四种方式可以凑成总金额: 10=10 10=5+5 10=5+1+1+1+1+...原创 2020-04-23 19:49:21 · 153 阅读 · 0 评论 -
[leetcode日记]199.二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4] 输出: [1, 3, 4]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-right-side-view著作权归领扣网络所有。商业转载请联系官方授权,非商业转载...原创 2020-04-22 18:10:03 · 212 阅读 · 0 评论 -
[leetcode日记]1248.统计优美子数组
leetcode-1248.统计优美子数组题目描述:给你一个整数数组 nums 和一个整数 k。如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。请返回这个数组中「优美子数组」的数目。提示:1 <= nums.length <= 500001 <= nums[i] <= 10^51 <= k <= nu...原创 2020-04-21 13:26:22 · 294 阅读 · 0 评论