基础算法
相声少年
这个作者很懒,什么都没留下…
展开
-
力扣刷题笔记 20. 有效的括号 C#
今日签到题,题目如下:给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]"输出: false示例5:输入: "{[]}"输出: ...原创 2020-08-14 00:27:41 · 261 阅读 · 0 评论 -
力扣刷题笔记 43. 字符串相乘 C#
今日签到题,签到题如下:给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1和num2的长度小于110。 num1 和num2 只包含数字0-9。 num1 和num2均不以零开头,除非是数字 0 本身。...原创 2020-08-13 02:08:55 · 431 阅读 · 0 评论 -
力扣刷题笔记 696. 计数二进制子串 C#
今日签到题,题目如下:给你无向连通图中一个节点的引用,请你返回该图的深拷贝(克隆)。图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。class Node { public int val; public List<Node> neighbors;}测试用例格式:简单起见,每个节点的值都和它的索引相同。例如,第一个节点值为 1(val = 1),第二个节点值为 2(val = 2),以此类推。该图在测试用例中使...原创 2020-08-12 00:47:08 · 131 阅读 · 0 评论 -
力扣刷题笔记 696. 计数二进制子串 C#
今日签到题,题目如下:给定一个字符串s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起的。重复出现的子串要计算它们出现的次数。示例 1 :输入: "00110011"输出: 6解释: 有6个子串具有相同数量的连续1和0:“0011”,“01”,“1100”,“10”,“0011” 和 “01”。请注意,一些重复出现的子串要计算它们出现的次数。另外,“00110011”不是有效的子串,因为所有的0(和1)没有组合在一起。.原创 2020-08-10 11:03:32 · 139 阅读 · 0 评论 -
力扣刷题笔记 93. 复原IP地址 C#
今日签到题,题目如下:给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 '.' 分隔。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/restore-ip-addresses著作权归领扣网络所有。商.原创 2020-08-09 16:23:26 · 258 阅读 · 0 评论 -
力扣刷题笔记 100. 相同的树 C#
今日签到题,题目如下:给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \...原创 2020-08-07 01:35:40 · 345 阅读 · 0 评论 -
力扣刷题笔记 337. 打家劫舍 III C#
今日签到题,题目如下:在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,null,3,null,1] 3 / \ 2 3...原创 2020-08-05 23:06:35 · 186 阅读 · 0 评论 -
力扣刷题笔记 415. 字符串相加 C#
8 月 3 日签到题,题目如下:给定两个字符串形式的非负整数num1 和num2,计算它们的和。提示:num1 和num2的长度都小于 5100 num1 和num2 都只包含数字0-9 num1 和num2 都不包含任何前导零 你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-strings著作权归领扣网络所有。商业转载请...原创 2020-08-05 22:36:29 · 574 阅读 · 0 评论 -
力扣刷题笔记 114. 二叉树展开为链表 魔术索引 C#
8 月 2 日签到题,题目如下:给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1 \ 2 \ 3 \ 4 \ 5 \ 6依照题意以及示例,即前序遍历每次将右节点接到左节点的右叶子节点,然后把左节点替换到右节点的位置,即获得结果。复杂度分析:遍历所有节点,.原创 2020-08-05 22:20:54 · 119 阅读 · 0 评论 -
力扣刷题笔记 130. 被围绕的区域 C#
8 月 1 日签到题,题目如下:你有k个升序排列的整数列表。找到一个最小区间,使得k个列表中的每个列表至少有一个数包含在其中。我们定义如果b-a < d-c或者在b-a == d-c时a < c,则区间 [a,b] 比 [c,d] 小。示例:输入:[[4,10,15,24,26], [0,9,12,20], [5,18,22,30]]输出:[20,24]解释:列表 1:[4, 10, 15, 24, 26],24 在区间 [20,24] 中。...原创 2020-08-05 20:54:09 · 244 阅读 · 0 评论 -
力扣刷题笔记 面试题 08.03. 魔术索引 C#
7 月 31 日签到题,题目如下:魔术索引。 在数组A[0...n-1]中,有所谓的魔术索引,满足条件A[i] = i。给定一个有序整数数组,编写一种方法找出魔术索引,若有的话,在数组A中找出一个魔术索引,如果没有,则返回-1。若有多个魔术索引,返回索引值最小的一个。示例1:输入:nums = [0, 2, 3, 4, 5]输出:0说明: 0下标的元素为0示例2:输入:nums = [1, 1, 1]输出:1说明:nums长度在[1, 1000000]之间此题为原...原创 2020-08-04 15:19:52 · 182 阅读 · 0 评论 -
力扣刷题笔记 343. 整数拆分 C#
7月30日签到题,题目如下:给定一个正整数n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1。示例2:输入: 10输出: 36解释: 10 = 3 + 3 + 4, 3 ×3 ×4 = 36。说明: 你可以假设n不小于 2 且不大于 58。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/int...原创 2020-08-04 12:09:56 · 318 阅读 · 0 评论 -
力扣刷题笔记 104. 二叉树的最大深度 C#
7月27日签到题,题目如下:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree...原创 2020-08-04 11:36:24 · 253 阅读 · 0 评论 -
力扣刷题笔记 392. 判断子序列 C#
今日签到题:题目如下:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。示例1:s = "abc", t = "ahbgdc"返回true.示例2:s =...原创 2020-07-27 12:14:59 · 282 阅读 · 0 评论 -
力扣刷题笔记 329. 矩阵中的最长递增路径 C#
7月26日签到题,题目如下:给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =[ [9,9,4], [6,6,8], [2,1,1]]输出: 4解释: 最长递增路径为[1, 2, 6, 9]。示例 2:输入: nums =[ [3,4,5], [3,2,6], [2,2,1]]输出: 4解释: 最长递...原创 2020-07-27 11:59:31 · 380 阅读 · 0 评论 -
力扣刷题笔记 410. 分割数组的最大值 C#
7月25日签到题,题目如下:给定一个非负整数数组和一个整数m,你需要将这个数组分成m个非空的连续子数组。设计一个算法使得这m个子数组各自和的最大值最小。注意:数组长度n满足以下条件:1 ≤n≤ 1000 1 ≤m≤ min(50,n)示例:输入:nums = [7,2,5,10,8]m = 2输出:18解释:一共有四种方法将nums分割为2个子数组。其中最好的方式是将其分为[7,2,5] 和 [10,8],因为此时这两个子数组各自的和的最...原创 2020-07-27 11:46:31 · 299 阅读 · 0 评论 -
力扣刷题笔记 1025. 除数博弈 C#
今日签到题,题目如下:爱丽丝和鲍勃一起玩游戏,他们轮流行动。爱丽丝先手开局。最初,黑板上有一个数字N。在每个玩家的回合,玩家需要执行以下操作:选出任一x,满足0 < x < N 且N % x == 0。用 N - x替换黑板上的数字 N 。如果玩家无法执行这些操作,就会输掉游戏。只有在爱丽丝在游戏中取得胜利时才返回True,否则返回 false。假设两个玩家都以最佳状态参与游戏。示例 1:输入:2输出:true解释:爱丽丝选择 1,鲍勃无法...原创 2020-07-24 01:48:49 · 199 阅读 · 0 评论 -
力扣刷题笔记 64. 最小路径和 C#
今日签到题,题目如下:给定一个包含非负整数的 mxn网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/minimum-path-sum著作权归领扣网络所有。商业转载请联系官方授...原创 2020-07-23 10:46:01 · 345 阅读 · 0 评论 -
力扣刷题笔记 剑指 Offer 11. 旋转数组的最小数字 C#
今日签到题,题目如下:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-...原创 2020-07-22 14:39:42 · 199 阅读 · 0 评论 -
力扣刷题笔记 95. 不同的二叉搜索树 II C#
今日签到题,题目如下:给定一个整数 n,生成所有由 1 ...n 为节点所组成的 二叉搜索树 。示例:输入:3输出:[[1,null,3,2],[3,2,null,1],[3,1,null,null,2],[2,1,3],[1,null,2,null,3]]解释:以上的输出对应以下 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \...原创 2020-07-21 15:50:52 · 226 阅读 · 0 评论 -
力扣刷题笔记 167. 两数之和 II - 输入有序数组 C#
今日签到题,题目如下:给定一个已按照升序排列的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1必须小于index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], target = 9输出: [1,2]解释: 2 与 7 之和等于目标数 9 。因...原创 2020-07-20 16:44:47 · 170 阅读 · 0 评论 -
力扣刷题笔记 312. 戳气球 C#
7月19日签到题,题目如下:有 n 个气球,编号为0 到 n-1,每个气球上都标有一个数字,这些数字存在数组nums中。现在要求你戳破所有的气球。如果你戳破气球 i ,就可以获得nums[left] * nums[i] * nums[right]个硬币。这里的left和right代表和i相邻的两个气球的序号。注意当你戳破了气球 i 后,气球left和气球right就变成了相邻的气球。求所能获得硬币的最大数量。说明:你可以假设nums[-1] = nums...原创 2020-07-20 16:33:33 · 289 阅读 · 0 评论 -
力扣刷题笔记 97. 交错字符串 C#
7月18日签到题,题目如下:给定三个字符串s1, s2, s3, 验证s3是否是由s1和s2 交错组成的。示例 1:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"输出:true示例2:输入:s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"输出:false来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/interle...原创 2020-07-20 16:07:39 · 195 阅读 · 0 评论 -
力扣刷题笔记 35. 搜索插入位置 C#
7月17日签到题,题目如下:给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.c.原创 2020-07-20 15:15:30 · 207 阅读 · 0 评论 -
力扣刷题笔记 785. 判断二分图 C#
7月16日签到题,题目如下:给定一个无向图graph,当这个图为二分图时返回true。如果我们能将一个图的节点集合分割成两个独立的子集A和B,并使图中的每一条边的两个节点一个来自A集合,一个来自B集合,我们就将这个图称为二分图。graph将会以邻接表方式给出,graph[i]表示图中与节点i相连的所有节点。每个节点都是一个在0到graph.length-1之间的整数。这图中没有自环和平行边:graph[i]中不存在i,并且graph[i]中没有重复的值。示例 1:输入: [[1,3..原创 2020-07-20 15:03:05 · 206 阅读 · 0 评论 -
力扣刷题笔记 96. 不同的二叉搜索树 C#
今日签到题,题目如下:给定一个整数 n,求以1 ...n为节点组成的二叉搜索树有多少种?示例:输入: 3输出: 5解释:给定 n = 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 2 / / \ ...原创 2020-07-15 01:10:56 · 230 阅读 · 0 评论 -
力扣刷题笔记 120. 三角形最小路径和 C#
今日签到题,题目如下:给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 + 1 的两个结点。例如,给定三角形:[ [2], [3,4], [6,5,7], [4,1,8,3]]自顶向下的最小路径和为11(即,2+3+5+1= 11)。来源:力扣(LeetCode)说明:如果你可以只使用O(n)的额外空间(n为三角...原创 2020-07-14 15:46:38 · 265 阅读 · 0 评论 -
力扣刷题笔记 350. 两个数组的交集 II C#
今日签到题,题目如下给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。我们可以不考虑输出结果的顺序。进阶:如果给定的数组已经排好序呢?你将如何优化你的算法?如果nums1的大小比nums2小...原创 2020-07-13 01:04:34 · 257 阅读 · 0 评论 -
力扣刷题笔记174. 地下城游戏 C#
今日签到题,题目如下:一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整数,则表示骑士将损失健康点数);其他房间要么是空的(房间里的值为 0),要么包含增加骑士健康点数的魔法球(若房间里的值为.原创 2020-07-12 15:37:32 · 277 阅读 · 0 评论 -
力扣刷题笔记 315. 计算右侧小于当前元素的个数 C#
今日签到题,题目如下:给定一个整数数组 nums,按要求返回一个新数组counts。数组 counts 有该性质: counts[i] 的值是nums[i] 右侧小于nums[i] 的元素的数量。示例:输入: [5,2,6,1]输出: [2,1,1,0]解释:5 的右侧有 2 个更小的元素 (2 和 1).2 的右侧仅有 1 个更小的元素 (1).6 的右侧有 1 个更小的元素 (1).1 的右侧有 0 个更小的元素.来源:力扣(LeetCode)链接:https:...原创 2020-07-11 21:15:39 · 285 阅读 · 0 评论 -
力扣刷题笔记 309. 最佳买卖股票时机含冷冻期 C#
今日签到题,题目如下:给定一个整数数组,其中第i个元素代表了第i天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。示例:输入: [1,2,3,0,2]输出: 3解释: 对应的交易状态为: [买入, 卖出, 冷冻期, 买入, 卖出]来源:力扣(LeetCode)链接:https:/...原创 2020-07-10 03:58:27 · 203 阅读 · 0 评论 -
力扣刷题笔记 面试题 17.13. 恢复空格 C#
今日签到题,题目如下:哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboot"。在处理标点符号和大小写之前,你得先把它断成词语。当然了,你有一本厚厚的词典dictionary,不过,有些词没在词典里。假设文章用sentence表示,设计一个算法,把文章断开,要求未识别的字符最少,返回未识别的字符数。注意:原创 2020-07-09 15:13:48 · 233 阅读 · 0 评论 -
力扣刷题笔记 面试题 16.11. 跳水板 C#
7月8日签到题,题目如下:你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: {3,4,5,6}提示:0 < shorter <= longer0 <= k <= 100000来源:力扣(LeetCode)链接:h原创 2020-07-09 13:17:51 · 203 阅读 · 0 评论 -
力扣刷题笔记 112. 路径总和 C#
7月7日签到题,题目如下:给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1返...原创 2020-07-09 13:10:59 · 248 阅读 · 0 评论 -
力扣刷题笔记 63. 不同路径 II C#
题目如下:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m和 n 的值均不超过 100。示例1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出: 2解释:3x3 网格的...原创 2020-07-06 15:40:16 · 203 阅读 · 0 评论 -
力扣刷题笔记 44. 通配符匹配 C#
昨日签到题,题目如下给定一个字符串(s) 和一个字符模式(p) ,实现一个支持'?'和'*'的通配符匹配。'?' 可以匹配任何单个字符。'*' 可以匹配任意字符串(包括空字符串)。两个字符串完全匹配才算匹配成功。说明:s可能为空,且只包含从a-z的小写字母。p可能为空,且只包含从a-z的小写字母,以及字符?和*。示例1:输入:s = "aa"p = "a"输出: false解释: "a" 无法匹配 "aa" 整个字符串。示例2:输...原创 2020-07-06 11:54:12 · 604 阅读 · 0 评论 -
力扣刷题笔记 32. 最长有效括号 C#
今日签到题,题目如下:给定一个只包含 '('和 ')'的字符串,找出最长的包含有效括号的子串的长度。示例1:输入: "(()"输出: 2解释: 最长有效括号子串为 "()"示例 2:输入: ")()())"输出: 4解释: 最长有效括号子串为 "()()"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-valid-parentheses著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明...原创 2020-07-04 23:11:13 · 202 阅读 · 0 评论 -
力扣刷题笔记 108. 将有序数组转换为二叉搜索树 C#
题目如下:将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差的绝对值不超过 1。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / /-10 5来源:力扣(LeetCode)链接:https://leetcode-cn.com/...原创 2020-07-03 14:56:18 · 234 阅读 · 0 评论 -
力扣刷题笔记 23. 合并K个排序链表 C#
题目如下:合并k个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-k-sorted-lists著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出...原创 2020-07-02 17:35:49 · 202 阅读 · 0 评论 -
力扣刷题笔记 718. 最长重复子数组 C#
题目如下给两个整数数组A和B,返回两个数组中公共的、长度最长的子数组的长度。示例 1:输入:A: [1,2,3,2,1]B: [3,2,1,4,7]输出: 3解释:长度最长的公共子数组是 [3, 2, 1]。说明:1 <= len(A), len(B) <= 10000 <= A[i], B[i] < 100来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-length...原创 2020-07-01 16:28:41 · 276 阅读 · 0 评论