Leetcode
致力于打造一个c#版本的LeetCode材料
李硕`丹诗尔顿
石坠可雕琢,虽美及相克。一页实则会,锁恐千秋坠。 石页不修边,一页请逃越,遂一页
20180827石坠千秋落,相克怎雕琢。一页实则许,恐至终难归。
展开
-
c# leetcode 648. 单词替换
648. 单词替换难度中等81在英语中,我们有一个叫做词根(root)的概念,它可以跟着其他一些词组成另一个较长的单词——我们称这个词为继承词(successor)。例如,词根an,跟随着单词other(其他),可以形成新的单词another(另一个)。现在,给定一个由许多词根组成的词典和一个句子。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。你需要输出替换之后的句子。示例 1:输入:dictionary = ["ca...原创 2020-10-09 17:48:06 · 233 阅读 · 0 评论 -
c# leetcode 1512. 好数对的数目 (哈希)
给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。示例 1:输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始示例 2:输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对示例 3:输入:nums = [1,2,3.原创 2020-08-06 10:02:55 · 231 阅读 · 0 评论 -
c# leetcode 面试题24. 反转链表(单链表) 递归
借鉴定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL限制:0 <= 节点个数 <= 5000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof著作权归领扣网络所有。商业转载...原创 2020-06-07 19:25:26 · 338 阅读 · 0 评论 -
c# leetcode 面试题22. 链表中倒数第k个节点 (单链表)
难度简单42收藏分享切换为英文关注反馈输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。解释:比较典型的双指针游走题目,设有两个指针 p,q :初始时,两个指针均指向 head。先将 q 向后移动 k 次。此时p,q的距离为 k。同时移动 p,q, 直到 q 指向 nullptr。此时q->va...原创 2020-06-07 12:08:32 · 192 阅读 · 0 评论 -
c# leetcode 面试题 02.02. 返回倒数第 k 个节点(单链表)
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4解释:比较典型的双指针游走题目,设有两个指针 p,q :初始时,两个指针均指向 head。先将 q 向后移动 k 次。此时p,q的距离为 k。同时移动 p,q, 直到 q 指向 nullptr。此时p->val即为答案。可能是最简单的双指针: public int .原创 2020-06-04 16:29:39 · 146 阅读 · 0 评论 -
c# leetcode 784. 字母大小写全排列(回溯算法)
给定一个字符串S,通过将字符串S中的每个字母转变大小写,我们可以获得一个新的字符串。返回所有可能得到的字符串集合。示例:输入: S = "a1b2"输出: ["a1b2", "a1B2", "A1b2", "A1B2"]输入: S = "3z4"输出: ["3z4", "3Z4"]输入: S = "12345"输出: ["12345"]回溯: static ILi...原创 2020-04-21 12:29:37 · 347 阅读 · 0 评论 -
c# leetcode 525. 连续数组 (哈希)
给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。没读懂题目~public int FindMaxL...原创 2020-04-14 17:10:48 · 130 阅读 · 0 评论 -
c# leetcode 781. 森林中的兔子(哈希)
森林中,每个兔子都有颜色。其中一些兔子(可能是全部)告诉你还有多少其他的兔子和自己有相同的颜色。我们将这些回答放在answers数组里。返回森林中兔子的最少数量。示例:输入: answers = [1, 1, 2]输出: 5解释:两只回答了 "1" 的兔子可能有相同的颜色,设为红色。之后回答了 "2" 的兔子不会是红色,否则他们的回答会相互矛盾。设回答了 "2" 的兔子为蓝...原创 2020-04-13 16:11:11 · 212 阅读 · 0 评论 -
c# leetcode 151. 翻转字符串里的单词(字符串)
151. 翻转字符串里的单词难度中等139给定一个字符串,逐个翻转字符串中的每个单词。示例 1:输入: "the sky is blue"输出:"blue is sky the"示例 2:输入: " hello world! "输出:"world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。...原创 2020-04-10 12:51:28 · 236 阅读 · 0 评论 -
c# leetcode 1323. 6 和 9 组成的最大数字(数学)
难度简单19收藏分享切换为英文关注反馈给你一个仅由数字 6 和 9 组成的正整数num。你最多只能翻转一位数字,将 6 变成9,或者把9 变成6 。请返回你可以得到的最大数字。示例 1:输入:num = 9669输出:9969解释:改变第一位数字可以得到 6669 。改变第二位数字可以得到 9969 。改变第三位数字可以得到 9699 。改变第四位数字可...原创 2020-04-05 13:25:30 · 174 阅读 · 0 评论 -
c# leetcode 241. 为运算表达式设计优先级 (分治算法)
难度中等139收藏分享切换为英文关注反馈给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含+,-以及*。示例1:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例2:输入: "2*3-4*5"输出: [-3...原创 2020-04-04 20:25:19 · 163 阅读 · 0 评论 -
c# leetcode 面试题 16.01. 交换数字(数学)
难度中等10收藏分享切换为英文关注反馈编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。示例:输入: numbers = [1,2]输出: [2,1]提示:numbers.length == 2哈哈哈,简单 ,加法public class Solution { public int[] SwapNumbers(int[] num...原创 2020-04-04 19:35:56 · 241 阅读 · 0 评论 -
c# leetcode 面试题 01.01. 判定字符是否唯一 (数组)
难度简单16收藏分享切换为英文关注反馈实现一个算法,确定一个字符串s的所有字符是否全都不同。示例 1:输入: s = "leetcode"输出: false 示例 2:输入: s = "abc"输出: true限制:0 <= len(s) <= 100 如果你不使用额外的数据结构,会很加分。简单,hashsetpublic clas...原创 2020-04-04 14:41:16 · 182 阅读 · 0 评论 -
c# leetcode 281. 整数的各位积和之差(数组)
难度简单29收藏分享切换为英文关注反馈给你一个整数n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。示例 1:输入:n = 234输出:15 解释:各位数之积 = 2 * 3 * 4 = 24 各位数之和 = 2 + 3 + 4 = 9 结果 = 24 - 9 = 15示例 2:输入:n = 4421输出:21解释: 各位数之积 = ...原创 2020-04-04 14:12:17 · 205 阅读 · 0 评论 -
c# leetcode 1299. 将每个元素替换为右侧最大元素(数组)
难度简单20收藏分享切换为英文关注反馈给你一个数组arr,请你将每个元素用它右边最大的元素替换,如果是最后一个元素,用-1替换。完成所有替换操作后,请你返回这个数组。示例:输入:arr = [17,18,5,4,6,1]输出:[18,6,6,6,1,-1]提示:1 <= arr.length <= 10^4 1 <= arr[i] <...原创 2020-04-04 13:14:07 · 272 阅读 · 0 评论 -
c# leetcode 1389. 按既定顺序创建目标数组 (数组)
难度简单4收藏分享切换为英文关注反馈给你两个整数数组nums和index。你需要按照以下规则创建目标数组:目标数组target最初为空。 按从左到右的顺序依次读取nums[i]和index[i],在target数组中的下标index[i]处插入值nums[i]。 重复上一步,直到在nums和index中都没有要读取的元素。请你返回目标数组。题目...原创 2020-04-04 12:33:41 · 270 阅读 · 0 评论 -
c# leetcode 1395. 统计作战单位数(数组)
n 名士兵站成一排。每个士兵都有一个 独一无二 的评分 rating 。每 3 个士兵可以组成一个作战单位,分组规则如下:从队伍中选出下标分别为 i、j、k 的 3 名士兵,他们的评分分别为 rating[i]、rating[j]、rating[k]作战单位需满足: rating[i] < rating[j] < rating[k] 或者 rating[i] > ra...原创 2020-04-03 16:13:39 · 273 阅读 · 1 评论 -
c# leetcode 554. 砖墙(哈希)
554. 砖墙难度中等63收藏分享切换为英文关注反馈你的面前有一堵方形的、由多行砖块组成的砖墙。 这些砖块高度相同但是宽度不同。你现在要画一条自顶向下的、穿过最少砖块的垂线。砖墙由行的列表表示。 每一行都是一个代表从左至右每块砖的宽度的整数列表。如果你画的线只是从砖块的边缘经过,就不算穿过这块砖。你需要找出怎样画才能使这条线穿过的砖块数量最少,并且返回穿过的砖块数量。你不能沿着墙的两个...原创 2020-04-02 16:51:19 · 219 阅读 · 0 评论 -
c# leetcode 139. 单词拆分(动态规划)
139. 单词拆分难度中等367收藏分享切换为英文关注反馈给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true...原创 2020-04-02 15:58:17 · 264 阅读 · 0 评论 -
c# leetcode 面试题 08.09. 括号(字符串)(回溯)
面试题 08.09. 括号难度中等14收藏分享切换为英文关注反馈括号。设计一种算法,打印n对括号的所有合法的(例如,开闭一一对应)组合。说明:解集不能包含重复的子集。例如,给出n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]public class Solution {...原创 2020-03-31 22:30:36 · 209 阅读 · 0 评论 -
树 leetcode 总结
树 树的基础知识 我的答案 | 连接 题号 题目 通过率 难度 简洁总结 掌握 #94 二叉树的中序遍历 70.8% 中等 #95 不同的二叉搜索树 II 62.3% 中等 ...原创 2020-03-31 20:03:29 · 242 阅读 · 0 评论 -
c# leetcode 79. 单词搜索 失败
79. 单词搜索难度中等346收藏分享切换为英文关注反馈给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[ ['A','B','C','E'], ['S','F','C','S'], ['...原创 2020-03-24 00:34:32 · 165 阅读 · 0 评论 -
c# leetcode 1351. 统计有序矩阵中的负数 (数组)
没什么技术含量1351. 统计有序矩阵中的负数难度简单15收藏分享切换为英文关注反馈给你一个m* n的矩阵grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。请你统计并返回grid中负数的数目。示例 1:输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]输出:8...原创 2020-03-23 08:35:59 · 317 阅读 · 0 评论 -
c# leetcode 82. 删除排序链表中的重复元素 II (链表)
82. 删除排序链表中的重复元素 II难度中等236收藏分享切换为英文关注反馈给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。示例1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例2:输入: 1->1->1->2->3输出: ...原创 2020-03-23 08:11:21 · 191 阅读 · 0 评论 -
栈 leetcode 总结
栈 我的答案 题号 题目 通过率 难度 总结 掌握 #20 有效的括号 41.2% 简单 #42 接雨水 49.5% 困难 #71 ...原创 2020-03-22 19:08:59 · 234 阅读 · 0 评论 -
c# leetcode 917. 仅仅反转字母(栈、字符串)
给定一个字符串S,返回“反转后的”字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。示例 1:输入:"ab-cd"输出:"dc-ba"示例 2:输入:"a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例 3:输入:"Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"...原创 2020-03-22 18:58:31 · 207 阅读 · 0 评论 -
c# leetcode 415. 字符串相加(字符串)
给定两个字符串形式的非负整数num1和num2,计算它们的和。注意:num1和num2的长度都小于 5100. num1和num2都只包含数字0-9. num1和num2都不包含任何前导零。 你不能使用任何內建 BigInteger 库,也不能直接将输入的字符串转换为整数形式。public string AddStrings(string num1, ...原创 2020-03-22 15:36:59 · 687 阅读 · 0 评论 -
回溯算法 leetcode 总结
回溯算法 我的答案 题号 题目 通过率 难度 总结 掌握 #10 正则表达式匹配 26.8% 困难 #17 电话号码的字母组合 52.9% 中等 ...原创 2020-03-22 14:48:37 · 338 阅读 · 0 评论 -
字符串 leetcode 总结
字符串 我的答案 题号 题目 通过率 难度 总结 掌握 #3 无重复字符的最长子串 33.4% 中等 #5 最长回文子串 29.0% 中等 ...原创 2020-03-21 16:49:44 · 580 阅读 · 0 评论 -
c# leetcode 面试题58 - II. 左旋转字符串 (字符串)
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。示例 1:输入: s = "abcdefg", k = 2输出:"cdefgab"示例 2:输入: s = "lrloseumgh", k = 6输出:"umghlrl...原创 2020-03-21 16:42:26 · 185 阅读 · 0 评论 -
哈希算法 leetcode 总结
哈希 我的答案 题号 题目 通过率 难度 总结 掌握 #1 两数之和 47.9% 简单 #3 无重复字符的最长子串 33.4% 中等 ...原创 2020-03-21 17:00:50 · 575 阅读 · 0 评论 -
c# leetcode 525. 连续数组(哈希)
给定一个二进制数组, 找到含有相同数量的 0 和 1 的最长连续子数组(的长度)。示例 1:输入: [0,1]输出: 2说明: [0, 1] 是具有相同数量0和1的最长连续子数组。示例 2:输入: [0,1,0]输出: 2说明: [0, 1] (或 [1, 0]) 是具有相同数量0和1的最长连续子数组。注意:给定的二进制数组的长度不会超过50000。一:用暴...原创 2020-03-20 09:48:14 · 222 阅读 · 0 评论 -
c# 链表知识
总结一下c#对单链表的知识:创建一个单链表: 1->2->3->4->5 var head = new ListNode(1) { next = new ListNode(2) { next = new ListNode(3) { next = new ListNode(4) ...原创 2019-02-26 19:07:55 · 900 阅读 · 0 评论 -
链表 leetcode 总结
链表 我的答案 题号 题目 通过率 难度 总结 掌握 点击下方 ** ** 链表知识点总结 #2 两数相加 36.9% 中等 19 #19 ...原创 2020-03-17 13:42:33 · 198 阅读 · 0 评论 -
c# leetcode 485. 最大连续1的个数(数组)
给定一个二进制数组, 计算其中最大连续1的个数。示例 1:输入: [1,1,0,1,1,1]输出: 3解释: 开头的两位和最后的三位都是连续1,所以最大连续1的个数是 3.注意:输入的数组只包含0和1。 输入数组的长度是正整数,且不超过 10,000。public class Solution { public int FindMaxConsecutive...原创 2020-03-16 21:41:26 · 307 阅读 · 0 评论 -
c# leetcode 1295. 统计位数为偶数的数字(数组)
给你一个整数数组nums,请你返回其中位数为偶数的数字的个数。示例 1:输入:nums = [12,345,2,6,7896]输出:2解释:12 是 2 位数字(位数为偶数)345 是 3 位数字(位数为奇数)2 是 1 位数字(位数为奇数)6 是 1 位数字 位数为奇数)7896 是 4 位数字(位数为偶数)因此只有 12 和 7896 是位数为偶数...原创 2020-03-16 18:28:14 · 305 阅读 · 0 评论 -
c# leetcode 941. 有效的山脉数组(数组)
给定一个整数数组A,如果它是有效的山脉数组就返回true,否则返回false。让我们回顾一下,如果 A 满足下述条件,那么它是一个山脉数组:A.length >= 3 在0 < i< A.length - 1条件下,存在i使得: A[0] < A[1] < ... A[i-1] < A[i] A[i] > A[i+1] &g...原创 2020-03-16 16:55:31 · 167 阅读 · 1 评论 -
数组 leetcode 总结
题目 总结 难度 我的答案 掌握情况 76. 最小覆盖子串 双指针移动 困难 76 未掌握 27. 移除元素 原地移除数组的值,返回新数组长度 简单 27 掌握 26. 删除排序数组中的重复项 System.Array.Resize(ref num...原创 2020-03-16 16:07:59 · 146 阅读 · 0 评论 -
c# leetcode 946. 验证栈序列(栈)
给定pushed和popped两个序列,每个序列中的值都不重复,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回true;否则,返回false。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), p...原创 2020-03-16 12:12:43 · 197 阅读 · 0 评论 -
c# leetcode 1021. 删除最外层的括号 (栈)
有效括号字符串为空("")、"(" + A + ")"或A + B,其中A和B都是有效的括号字符串,+代表字符串的连接。例如,"","()","(())()"和"(()(()))"都是有效的括号字符串。如果有效字符串S非空,且不存在将其拆分为S = A+B的方法,我们称其为原语(primitive),其中A和B都是非空有效括号字符串。给出一个非空有效字...原创 2020-03-16 08:31:13 · 315 阅读 · 0 评论