算法刷题
文章平均质量分 63
晓哥的技术客栈
这个作者很懒,什么都没留下…
展开
-
【二叉树】298. 二叉树最长连续序列
该路径,可以是从某个初始节点到树中任意节点,通过「父 - 子」关系连接而产生的任意路径。且必须从父节点到子节点,反过来是不可以的。给你一棵指定的二叉树的根节点 root ,请你计算其中 最长连续序列路径 的长度。输入:root = [1,null,3,2,4,null,null,null,5]解释:当中,最长连续序列是 2-3。注意,不是 3-2-1,所以返回 2。解释:当中,最长连续序列是 3-4-5 ,所以返回结果为 3。输入:root = [2,null,3,2,null,1]原创 2023-06-07 20:22:58 · 1159 阅读 · 1 评论 -
【滑动窗口】1100. 长度为 K 的无重复字符子串
使用滑动窗口,创建unordered_set集合,右指针移动时,判断集合中是否存在当前右指针所指元素,如果存在,则滑动左指针直到不存在。这里有 6 个满足题意的子串,分别是:‘havef’,‘avefu’,‘vefun’,‘efuno’,‘etcod’,‘tcode’。否则,将当前右指针所指元素加入集合,如果滑动窗口长度为目标长度,则将该滑动窗口内的字符串加入结果集,同时将左指针右移一位。给你一个字符串 S,找出所有长度为 K 且不含重复字符的子串,请你返回全部满足要求的子串的 数目。原创 2023-06-06 20:32:25 · 817 阅读 · 0 评论 -
【滑动窗口】487. 最大连续1的个数 II
滑动窗口,右指针滑动遇到0时,计算如果当前右指针位置的0变成1,那么会最长连续1的长度是多少,即继续遍历直到遇到下一个0或者到达数组末尾。注意,这时候要用一个临时指针遍历,因为还要计算不改变0的长度。给定一个二进制数组 nums ,如果最多可以翻转一个 0 ,则返回数组中连续 1 的最大个数。解释:翻转第一个 0 可以得到最长的连续 1。输入:nums = [1,0,1,1,0,1]如果不改变当前0,则更新左指针到当前位置+1。输入:nums = [1,0,1,1,0]原创 2023-06-06 20:13:25 · 879 阅读 · 0 评论 -
【滑动窗口】159. 至多包含两个不同字符的最长子串
一旦当前遍历到的字符在滑动窗口中不存在且滑动窗口内的字符种类等于2时,移动左指针直到滑动窗口内的字符种类小于2,将当前字符加入滑动窗口。给你一个字符串 s ,请你找出 至多 包含 两个不同字符 的最长子串,并返回该子串的长度。遍历字符串,使用unordered_map记录当前窗口的字符种类及个数。解释:满足题目要求的子串是 “aabbb” ,长度为 5。解释:满足题目要求的子串是 “ece” ,长度为 3。输入:s = “ccaabbb”输入:s = “eceba”原创 2023-06-05 20:19:46 · 874 阅读 · 0 评论 -
1055. 形成字符串的最短路径
(例如,“ace” 是 “abcde” 的子序列,而 “aec” 不是)。当出现该轮循环没匹配到目标字符串中的字符时,说明目标字符串中存在源字符串没有的字符,说明无法通过源字符串构建目标字符串。解释:目标字符串 “abcbc” 可以由 “abc” 和 “bc” 形成,它们都是源字符串 “abc” 的子序列。解释:由于目标字符串中包含字符 “d”,所以无法由源字符串的子序列构建目标字符串。解释:目标字符串可以按如下方式构建: “xz” + “y” + “xz”。原创 2023-06-05 19:56:20 · 521 阅读 · 0 评论 -
【反转再反转】186. 反转字符串中的单词 II
输入:s = [“t”,“h”,“e”," “,“s”,“k”,“y”,” “,“i”,“s”,” “,“b”,“l”,“u”,“e”]输出:[“b”,“l”,“u”,“e”,” “,“i”,“s”,” “,“s”,“k”,“y”,” ",“t”,“h”,“e”]单词 的定义为:单词是一个由非空格字符组成的序列。s 中的单词将会由单个空格分隔。必须设计并实现 原地 解法来解决此问题,即不分配额外的空间。给你一个字符数组 s ,反转其中 单词 的顺序。先整体反转,反转后数组中所有单词都是倒序。原创 2023-06-01 21:34:00 · 584 阅读 · 0 评论 -
【排序】280. 摆动排序
给你一个的整数数组 nums, 将该数组重新排序后使 nums[0] = nums[2]原创 2023-06-01 20:55:34 · 971 阅读 · 0 评论 -
【最值次值】624. 数组列表中的最大距离
现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。一种得到答案 4 的方法是从第一个数组或者第三个数组中选择 1,同时从第二个数组中选择 5。如果最小值或者最大值不止一次,或者最小值下标与最大值下标不相同,直接返回最大值减最小值。在小数组a中找出最小值和次小值,以及最小值出现的次数和最小值下标。在大数组b中找出最大值和次大值,以及最大值出现的次数和最大值下标。分别提取出所有数组的最小值和最大值得到小数组a和大数组b。否则返回最大值减次小值与次大值减最小值之间的最大值。原创 2023-05-31 22:59:13 · 893 阅读 · 0 评论 -
面试题 16.16. 部分排序
给定一个整数数组,编写一个函数,找出索引m和n,只要将索引区间[m,n]的元素排好序,整个数组就是有序的。函数返回值为[m,n],若不存在这样的m和n(例如整个数组是有序的),请返回[-1,-1]。如果第一次出现当前遍历元素小于ma,说明出现逆序,更新右边界为当前位置,同时寻找当前元素应该处于哪个位置,即左边界,记录这个值。之后如果还出现逆序,判断逆序的数是否小于之前出现过的逆序数,如果小于的话要更新左边界,否则只更新右边界。输入: [1,2,4,7,10,11,7,12,6,7,16,18,19]原创 2023-05-31 22:21:12 · 674 阅读 · 0 评论 -
【区间】剑指 Offer II 074. 合并区间
如果当前遍历的区间的左边界大于当前右边界,说明当前区间和前面区间不重叠,将前面区间放入结果集,同时更新左边界l为当前遍历的区间左边界,右边界r为当前遍历的区间的右边界。从下标1开始遍历区间,如果当前遍历的区间的左边界小于或等于当前右边界r,说明当前区间可以合并到前面,更新右边界r。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].输出:[[1,6],[8,10],[15,18]]原创 2023-05-31 21:30:24 · 651 阅读 · 0 评论 -
(双指针)leetcode11. 盛最多水的容器
以两指针所在位置的垂线高度作为桶的边缘。考虑指针如何移动,可以知道的是,两指针所指的垂线高度低的移动,桶的面积才可能增大,移动高的只可能变小或不变。给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。所以,每次移动垂线高度比较低的指针,直到两指针相遇。返回容器可以储存的最大水量。时间复杂度为O(n)原创 2023-05-12 14:29:08 · 995 阅读 · 0 评论 -
[滑动窗口]leetcode3. 无重复字符的最长子串
使用滑动窗口,遍历字符串,如果当前字符在滑动窗口内不存在,则将其加入滑动窗口(即滑动窗口右边界扩一位)请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是子串。如果当前字符在滑动窗口内存在,则滑动窗口左边界右移直到相同的字符不在窗口内。解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。159. 至多包含两个不同字符的最长子串。原创 2023-04-28 11:24:41 · 915 阅读 · 0 评论 -
【栈和队列】剑指 Offer 09. 用两个栈实现队列
用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )执行deleteHead时,删除出队栈的栈头元素,如果出队栈为空,则将入队栈的元素移入出队栈。如果入队栈也为空,返回-1。所有入栈出栈操作均根据栈规则。输出:[null,-1,null,null,5,2]输出:[null,null,3,-1,-1]设置两个栈,一个入队栈,一个出队栈。原创 2023-04-28 10:53:32 · 665 阅读 · 0 评论 -
(二叉树,层序遍历)leetcode662. 二叉树最大宽度
每一层的 宽度 被定义为该层最左和最右的非空节点(即,两个端点)之间的长度。解释:最大宽度出现在树的第 4 层,宽度为 7 (6,null,null,null,null,null,7)。输入:root = [1,3,2,5,null,null,9,6,null,7]解释:最大宽度出现在树的第 3 层,宽度为 4 (5,3,null,9)。解释:最大宽度出现在树的第 2 层,宽度为 2 (3,2)。输入:root = [1,3,2,5,3,null,9]输入:root = [1,3,2,5]原创 2023-03-14 10:18:24 · 320 阅读 · 0 评论 -
(二叉树)leetcode114. 二叉树展开为链表
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。输出:[1,null,2,null,3,null,4,null,5,null,6]如果左子树存在,将左子树放在右子树位置,右子树放在原左子树最右节点右侧。输入:root = [1,2,5,3,4,null,6]展开后的单链表应该与二叉树 先序遍历 顺序相同。时间复杂度O(n),空间复杂度O(1)依次遍历右子树,重复执行(1)操作。输入:root = [0]输入:root = []原创 2023-03-14 09:38:00 · 124 阅读 · 0 评论 -
(二叉树遍历)leetcode515. 在每个树行中找最大值
1.java队列知识,普通队列用LinkedList,优先队列使用PriorityQueue。给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。输入: root = [1,3,2,5,3,null,9]层序遍历,每次将队列一整层的节点取出,将其子节点放入队列中。时间复杂度为O(n),空间复杂度为O(n)输入: root = [1,2,3]取出节点的时候记录该层的最大值。输出: [1,3,9]原创 2023-03-13 09:07:43 · 283 阅读 · 0 评论 -
(栈)leetcode71. 简化路径
任意多个连续的斜杠(即,‘//’)都被视为单个斜杠 ‘/’。给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。如果遇到非”“和非”.“,则将当前字符串拼接在”/“之后入栈。此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含 ‘.’ 或 ‘…输入:path = “/a/./b/…输入:path = “/home//foo/”输入:path = “/home/”输出:“/home/foo”原创 2023-03-05 10:36:40 · 534 阅读 · 0 评论 -
(哈希)leetcode554. 砖墙
其中,wall[i] 是一个代表从左至右每块砖的宽度的数组。你需要找出怎样画才能使这条线 穿过的砖块数量最少 ,并且返回 穿过的砖块数量。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你的面前有一堵矩形的、由 n 行砖块组成的砖墙。每一行砖块的宽度之和相等。输入:wall = [[1,2,2,1],[3,1,2],[1,3,2],[2,4],[3,1,2],[1,3,1,1]]遍历哈希表,找到缝隙最多的位置,从该位置穿过去会穿过最少的砖。输入:wall = [[1],[1],[1]]原创 2023-03-04 09:49:59 · 296 阅读 · 0 评论 -
leetcode389. 找不同
设一个整型变量cnt,初始值为0.将字母映射到0-25,遍历字符串s和t,每次遍历,cnt减去s中字符对应的数字,加上t中字符对应的数字。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。输入:s = “abcd”, t = “abcde”最后cnt的值即为添加的字符对应的数字,映射回去。时间复杂度为O(n),空间复杂度为O(1)输入:s = “”, t = “y”解释:‘e’ 是那个被添加的字母。1.隐式转换赋值需要强转之后赋值。请找出在 t 中被添加的字母。原创 2023-03-03 09:02:43 · 237 阅读 · 0 评论 -
(哈希查找)leetcode290. 单词规律
这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 s 中的每个非空单词之间存在着双向连接的对应规律。输入: pattern = “abba”, s = “dog cat cat dog”输入:pattern = “abba”, s = “dog cat cat fish”输入: pattern = “aaaa”, s = “dog cat cat dog”给定一种规律 pattern 和一个字符串 s ,判断 s 是否遵循相同的规律。时间复杂度O(n),空间复杂度O(n)原创 2023-03-03 08:47:18 · 374 阅读 · 0 评论 -
(哈希查找)leetcode242. 有效的字母异位词
用一个长度为26的数组映射所有小写字母,遍历数组,字符串s中的字符映射的数组下标对应的值+1.字符串t中的字符映射的数组下标对应的值-1.注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。输入: s = “anagram”, t = “nagaram”输入: s = “rat”, t = “car”时间复杂度为O(n),空间复杂度O(n)最后判断数组值是否都为0.原创 2023-03-03 08:21:28 · 213 阅读 · 0 评论 -
(哈希查找)leetcode205. 同构字符串
每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同字符不能映射到同一个字符上,相同字符只能映射到同一个字符上,字符可以映射到自己本身。如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。输入:s = “paper”, t = “title”给定两个字符串 s 和 t ,判断它们是否是同构的。输入:s = “egg”, t = “add”输入:s = “foo”, t = “bar”时间复杂度为O(n),空间复杂度为O(n)如果发现1对多或者多对1则返回false。原创 2023-03-02 23:01:07 · 506 阅读 · 0 评论 -
(哈希查找)leetcode128. 最长连续序列
首先对数组去重,然后遍历去重后的数组,遍历元素为num时,查找数组中是否存在num+1, num+2…如果一直找到num+x,而num+x+1不存在时,则以num为起点的连续序列长度为x+1。都是属于以num-1为起点的序列的,没必要从num,num+1…所以,判断元素num是否可以作为起点,只要判断数组中是否存在num-1。解释:最长数字连续序列是 [1, 2, 3, 4]。输入:nums = [0,3,7,2,5,8,4,6,0,1]输入:nums = [100,4,200,1,3,2]原创 2023-03-02 09:43:46 · 279 阅读 · 0 评论 -
(哈希查找)leetcode49. 字母异位词分组
遍历map:采用迭代器map ::iterator it = map.begin();输入: strs = [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]输出: [[“bat”],[“nat”,“tan”],[“ate”,“eat”,“tea”]]遍历数组,将元素排序后作为map容器的key,vector作为map容器的value。查找key是否存在:map.find(key) == map.end()输出: [[“a”]]输出: [[“”]]原创 2023-03-02 09:13:27 · 302 阅读 · 0 评论 -
(二分查找)leetcode1539. 第 k 个缺失的正整数
考虑普遍情况,当缺失的数在数组中最大最小元素代表的区间范围内时,我们只要找到arr[i] - i - 1 >= k > arr[i-1] - i -1 -1的位置i,缺失的数肯定位于arr[i-1]和arr[i]之间。代表11前面缺失了6个数。解释:缺失的正整数包括 [1,5,6,8,9,10,12,13,…缺失的数为arr[i] - (arr[i] - i - 1 - k + 1) = i+k。输入:arr = [2,3,4,7,11], k = 5。输入:arr = [1,2,3,4], k = 2。原创 2023-03-01 10:13:37 · 227 阅读 · 0 评论 -
(二分查找)leetcode852. 山脉数组的峰顶索引
如果nums[mid] nums[mid+1]说明mid位于递减区,此时[mid+1,…arr[i - 1] < arr[i] > arr[i + 1] > …二分查找,根据nums[mid]和nums[mid+1]进行比较来判断mid处于下降区递增区还是递减区。输入:arr = [24,69,100,99,79,78,67,36,26,19]输入:arr = [0,2,1,0]输入:arr = [3,4,5,1]原创 2023-03-01 08:59:41 · 287 阅读 · 0 评论 -
(二分查找)leetcode162. 寻找峰值
易证,如果nums[i] > nums[i+1]那么[0…如果nums[i] < nums[i+1],那么[i…所以该问题具有二分性,如果是nums[mid]>nums[mid+1],那么丢弃[i+1…如果nums[mid]原创 2023-02-28 10:03:03 · 428 阅读 · 0 评论 -
(二分查找)leetcode153. 寻找旋转排序数组中的最小值
注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …解释:原数组为 [0,1,2,4,5,6,7] ,旋转 4 次得到输入数组。解释:原数组为 [1,2,3,4,5] ,旋转 3 次得到输入数组。若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]输入:nums = [4,5,6,7,0,1,2]输入:nums = [3,4,5,1,2]原创 2023-02-28 09:16:52 · 142 阅读 · 0 评论 -
(二分查找)278. 第一个错误的版本
你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。输入:n = 5, bad = 4。输入:n = 1, bad = 1。所以,4 是第一个错误的版本。1.二分查找的边界控制。原创 2023-02-27 09:47:02 · 47 阅读 · 0 评论 -
(二分查找)leetcode74. 搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。找到目标值所属的行,然后在该行采用二分查找。目标值所属的行也可以使用二分查找。将二维矩阵转为一维矩阵,然后采用二分法查找。每行的第一个整数大于前一行的最后一个整数。时间复杂度O(logm+logn)每行中的整数从左到右按升序排列。原创 2023-02-27 09:06:00 · 230 阅读 · 0 评论 -
(二分)leetcode69. x 的平方根
注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5。解释:8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去。给你一个非负整数 x ,计算并返回 x 的 算术平方根。采用二分法找出平方最接近x并且小于x的数。时间复杂度为O(logn)原创 2023-02-24 09:31:30 · 75 阅读 · 0 评论 -
(双指针排序)leetcode922. 按奇偶排序数组 II
对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数;当 nums[i] 为偶数时, i 也是 偶数。给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数。分别找到值与下标奇偶性不对应的位置,两指针值互换。你可以返回 任何满足上述条件的数组作为答案。设置奇偶指针,初始值分别为1,0。时间复杂度为O(N)原创 2023-02-23 09:46:05 · 176 阅读 · 0 评论 -
(排序)leetcode75. 颜色分类
当遇到0时,将当前值与下标p0互换,如果p0下标再p1下标之前,则互换后继续将换后当前位置的值与p1下标互换。因为与p0互换时,如果p0在p1之前,那么会把1换出去。然后p0和p1同时进1。遍历数组,当遇到1时,将当前值与下标p1互换。采用双指针p0和p1,初始值为0。p0永远小于或等于p1。原创 2023-02-23 08:58:42 · 195 阅读 · 0 评论 -
(计数排序)1365. 有多少小于当前数字的数字
对于排序后的第一个数及nums[0],小于它的个数为0,所以re[0]=0,当nums[i] > nums[i-1]时,re[i] = re[i-1] + 1 + cnt;给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。对于 nums[0]=8 存在四个比它小的数字:(1,2,2 和 3)。对于 nums[4]=3 存在三个比它小的数字:(1,2 和 2)。输入:nums = [8,1,2,2,3]输出:[4,0,1,1,3]输出:[2,1,0,3]原创 2023-02-20 09:34:28 · 260 阅读 · 0 评论 -
(排序)leetcode628. 三个数的最大乘积
第四种,非负数个数大于等于3,负数个数大于等于2,最大乘积为三个最大值相乘的值和两个最小负数相乘再乘以最大非负数的值的最大值。nums数组可以分成几种情况,第一种,负数的个数小于等于1,最大乘积为排序后的三个最大值相乘。给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积。第三种,非负数的个数小于等于2,最大乘积为两个最小负数相乘再乘以最大非负数。第二种,都是负数,最大乘积也是排序后的三个最大值相乘。时间复杂度O(nlogn)原创 2023-02-20 09:03:01 · 119 阅读 · 0 评论 -
(排序)leetcode179. 最大数
我们的目的是使得拼接后的数字尽可能大,所以只要比较两种拼接哪个比较大,就按哪个顺序,比如330 > 303,所以“3” > “30”,43243432 > 43243243所以把“43243” > “432”。最大的难点在于排序规则,当两个字符串不等长且等长的部分相等时,比如“3”和“30”,“432”和“43243”,要把谁放在前面。1.C++中sort自定义排序规则,注意如果不用lambda的话,自定义的排序规则要设成静态的。输入:nums = [3,30,34,5,9]时间复杂度为O(nlogn)原创 2023-02-19 09:38:59 · 176 阅读 · 0 评论 -
(排序)leetcode56. 合并区间
遍历所有区间,判断后一个区间的start值是否小于等于end值,如果是,则进行区间合并,合并后的区间start为前一个区间的start,end为两个区间end的最大值。输入:intervals = [[1,3],[2,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。输入:intervals = [[1,4],[4,5]]输出:[[1,6],[8,10],[15,18]]原创 2023-02-18 22:58:30 · 242 阅读 · 0 评论 -
(数学)leetcode204. 计数质数
解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7。给定整数 n ,返回 所有小于非负整数 n 的质数的数量。1.vector初始化。vectorre(n,value)从2开始直到根号n,将其倍数值全部标记为false。然后从下标2开始遍历数组,统计值为true的个数。创建一个大小为n的标记数组,初始值为true。原创 2023-02-16 17:57:26 · 118 阅读 · 0 评论 -
(数学)leetcode989. 数组形式的整数加法
给定 num ,整数的 数组形式 ,和整数 k ,返回 整数 num + k 的 数组形式。例如,对于 num = 1321 ,数组形式是 [1,3,2,1]。整数的 数组形式 num 是按照从左到右的顺序表示其数字的数组。输入:num = [1,2,0,0], k = 34。输入:num = [2,7,4], k = 181。输入:num = [2,1,5], k = 806。时间复杂度为O(n),空间复杂度为O(n)输出:[1,2,3,4]输出:[1,0,2,1]输出:[4,5,5]原创 2023-02-16 09:32:51 · 196 阅读 · 0 评论 -
(数学)leetcode67. 二进制求和
1.C++中,直接使用(int)c方式强转char为int会将char转为对应的ascii值。给你两个二进制字符串 a 和 b ,以二进制字符串的形式返回它们的和。输入:a = “1010”, b = “1011”输入:a = “11”, b = “1”时间复杂度O(n),空间复杂度O(n)设置一个进位变量,从尾到头遍历相加。输出:“10101”原创 2023-02-16 09:11:15 · 196 阅读 · 0 评论