Leetcode 算法c#
LiCcCcCcccCcc
己所不欲勿施于人
展开
-
Leetcode 451. 根据字符出现频率排序 c#
给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:“tree”输出:“eert”解释:'e’出现两次,'r’和’t’都只出现一次。因此’e’必须出现在’r’和’t’之前。此外,"eetr"也是一个有效的答案。示例 2:输入:“cccaaa”输出:“cccaaa”解释:'c’和’a’都出现三次。此外,"aaaccc"也是有效的答案。注意"cacaca"是不正确的,因为相同的字母必须放在一起。示例 3:输入:“Aabb”输出:“bbAa”解释:原创 2021-12-19 16:46:45 · 91 阅读 · 0 评论 -
Leetcode 372. 超级次方 c#
你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例 1:输入:a = 2, b = [3]输出:8示例 2:输入:a = 2, b = [1,0]输出:1024示例 3:输入:a = 1, b = [4,3,3,8,5,2]输出:1示例 4:输入:a = 2147483647, b = [2,0,0]输出:1198public class Solution { const int MOD = 1337; p原创 2021-12-05 15:29:47 · 76 阅读 · 0 评论 -
Leetcode 1446. 连续字符 c#
12月份第一天每日一题打卡 迎接新的一月吧。给你一个字符串 s ,字符串的「能量」定义为:只包含一种字符的最长非空子字符串的长度。请你返回字符串的能量。示例 1:输入:s = “leetcode”输出:2解释:子字符串 “ee” 长度为 2 ,只包含字符 ‘e’ 。示例 2:输入:s = “abbcccddddeeeeedcba”输出:5解释:子字符串 “eeeee” 长度为 5 ,只包含字符 ‘e’ 。示例 3:输入:s = “triplepillooooow”输出:5示例原创 2021-12-01 15:50:07 · 243 阅读 · 0 评论 -
Leetcode 198. 打家劫舍 c#
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例 1:输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。示例 2:输入:[2,7,9,3,原创 2021-11-18 11:13:52 · 73 阅读 · 0 评论 -
Leetcode 面试题 16.06. 最小差 c#
给定两个整数数组a和b,计算具有最小差绝对值的一对数值(每个数组中取一个值),并返回该对数值的差示例:输入:{1, 3, 15, 11, 2}, {23, 127, 235, 19, 8}输出:3,即数值对(11, 8)提示:1 <= a.length, b.length <= 100000-2147483648 <= a[i], b[i] <= 2147483647正确结果在区间 [0, 2147483647] 内 public static int Smalles原创 2021-11-17 15:20:37 · 302 阅读 · 0 评论 -
Leetcode 面试题 05.02. 二进制数转字符串 c#
二进制数转字符串。给定一个介于0和1之间的实数(如0.72),类型为double,打印它的二进制表达式。如果该数字无法精确地用32位以内的二进制表示,则打印“ERROR”。示例1:输入:0.625输出:“0.101”示例2:输入:0.1输出:“ERROR”提示:0.1无法被二进制准确表示提示:32位包括输出中的"0."这两位。 public static string PrintBin(double num) { StringBuilder sb原创 2021-11-16 10:47:30 · 419 阅读 · 0 评论 -
Leetcode 11. 盛最多水的容器 c#
题目网址(这题有图片复制不出来了)给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。原创 2021-11-15 10:51:29 · 83 阅读 · 0 评论 -
Leetcode 2053. 数组中第 K 个独一无二的字符串 c#
独一无二的字符串 指的是在一个数组中只出现过 一次 的字符串。给你一个字符串数组 arr 和一个整数 k ,请你返回 arr 中第 k 个 独一无二的字符串 。如果 少于 k 个独一无二的字符串,那么返回 空字符串 “” 。注意,按照字符串在原数组中的 顺序 找到第 k 个独一无二字符串。示例 1:输入:arr = [“d”,“b”,“c”,“b”,“c”,“a”], k = 2输出:“a”解释:arr 中独一无二字符串包括 “d” 和 “a” 。“d” 首先出现,所以它是第 1 个独一无二原创 2021-11-12 16:13:14 · 271 阅读 · 0 评论 -
Leetcode 4. 寻找两个正序数组的中位数 c#
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (m+n)) 。示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示原创 2021-11-11 16:30:14 · 259 阅读 · 0 评论 -
Leetcode 3. 无重复字符的最长子串 c#
给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列原创 2021-11-08 11:56:43 · 105 阅读 · 0 评论 -
Leetcode 876. 链表的中间结点 c#
给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NU原创 2021-11-01 10:18:51 · 125 阅读 · 0 评论 -
Leetcode 557. 反转字符串中的单词 III c#
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:“Let’s take LeetCode contest”输出:“s’teL ekat edoCteeL tsetnoc”提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。 public string ReverseWords(string s) { var sArr = s.Split(" "); for (int i = 0; i <原创 2021-11-01 10:00:19 · 120 阅读 · 0 评论 -
Leetcode 344. 反转字符串 c# 双指针解法
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”] public void ReverseString(char[] s)原创 2021-11-01 09:32:56 · 112 阅读 · 0 评论 -
Leetcode 344. 反转字符串 c# 暴力解法
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1:输入:s = [“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”] public void ReverseString(char[] s)原创 2021-11-01 09:27:48 · 124 阅读 · 0 评论 -
Leetcode 167. 两数之和 II - 输入有序数组 c#
给定一个已按照 非递减顺序排列 的整数数组 numbers ,请你从数组中找出两个数满足相加之和等于目标数 target 。函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 ,所以答案数组应当满足 1 <= answer[0] < answer[1] <= numbers.length 。你可以假设每个输入 只对应唯一的答案 ,而且你 不可以 重复使用相同的元素。示例 1:输入:numbers = [2,7,11,15], ta原创 2021-10-29 10:50:55 · 82 阅读 · 0 评论 -
Leetcode 283. 移动零 c#
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0] public void MoveZeroes(int[] nums) { List<int> lis = new List<int>(); List<int> lis2 = new List<int>(); for (int i = 0;原创 2021-10-29 10:48:15 · 124 阅读 · 0 评论 -
判断两个字符串所构成的字符是否相等(不按顺序) 242. 有效的字母异位词
string s = "anagram", t = "nagaram"; public static bool IsAnagram(string s, string t) { int m = s.Length, n = t.Length; if (m != n) return false; int[] sCnt = new int[26]; for (int i = 0; i < ..原创 2021-10-27 18:09:03 · 152 阅读 · 0 评论 -
Leetcode 35. 搜索插入位置 c#
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1:输入: nums = [1,3,5,6], target = 5输出: 2示例 2:输入: nums = [1,3,5,6], target = 2输出: 1示例 3:输入: nums = [1,3,5,6], target = 7输出: 4示例 4:输入: nums = [1,3,5,6], target原创 2021-10-27 13:04:11 · 73 阅读 · 0 评论 -
Leetcode 704. 二分查找 c#
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。示例 1:输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1 public int Search原创 2021-10-27 12:27:44 · 98 阅读 · 0 评论 -
Leetcode 278. 第一个错误的版本 c#
你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。假设你有 n 个版本 [1, 2, …, n],你想找出导致之后所有版本出错的第一个错误的版本。你可以通过调用 bool isBadVersion(version) 接口来判断版本号 version 是否在单元测试中出错。实现一个函数来查找第一个错误的版本。你应该尽量减少对调用 API 的次数。示例 1:输入:n = 5, bad原创 2021-10-27 12:26:06 · 85 阅读 · 0 评论 -
Leetcode 209. 长度最小的子数组 c#
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]输出:1示例 3:输入:原创 2021-09-17 11:05:55 · 100 阅读 · 0 评论 -
Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 c#
今天上线看见了新的版块,应该是学习计划之类的,打开了一个第一天是二分查找类型给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例 2:输入:nums = [5,7,7,8,8,10], ta原创 2021-09-06 11:40:06 · 253 阅读 · 0 评论 -
Leetcode 39. 组合总和 c#
给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个。示例 1:输入: candidates = [2,3,6,7], target = 7输出: [[7],[2,2,3]]示例 2:输入: candidates原创 2021-08-27 11:38:07 · 203 阅读 · 0 评论 -
Leetcode 881. 救生艇 c#
第 i 个人的体重为 people[i],每艘船可以承载的最大重量为 limit。每艘船最多可同时载两人,但条件是这些人的重量之和最多为 limit。返回载到每一个人所需的最小船数。(保证每个人都能被船载)。示例 1:输入:people = [1,2], limit = 3输出:1解释:1 艘船载 (1, 2)示例 2:输入:people = [3,2,2,1], limit = 3输出:3解释:3 艘船分别载 (1, 2), (2) 和 (3)示例 3:输入:people = [3原创 2021-08-26 18:10:19 · 89 阅读 · 0 评论 -
Leetcode 77. 组合剑指 Offer II 083. 没有重复元素集合的全排列 c#
给定一个不含重复数字的整数数组 nums ,返回其 所有可能的全排列 。可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]跟46题一样 public IList<IList<int>> Permute(int[]原创 2021-08-25 19:09:03 · 117 阅读 · 0 评论 -
Leetcode 77. 组合 c#
给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。你可以按 任何顺序 返回答案。示例 1:输入:n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例 2:输入:n = 1, k = 1输出:[[1]]学回溯第二天 推荐个连接教回溯的视频 public IList<IList<int>> Combine(int n, int k)原创 2021-08-24 18:10:17 · 237 阅读 · 0 评论 -
Leetcode 46. 全排列 c#
给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。示例 1:输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例 2:输入:nums = [0,1]输出:[[0,1],[1,0]]示例 3:输入:nums = [1]输出:[[1]]第一天学习回溯算法 public static IList<IList<int>>原创 2021-08-23 17:44:27 · 169 阅读 · 0 评论 -
Leetcode 1561. 你可以获得的最大硬币数目 c#
有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币:每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那一堆。Bob 将会取走最后一堆。重复这个过程,直到没有更多硬币。给你一个整数数组 piles ,其中 piles[i] 是第 i 堆中硬币的数目。返回你可以获得的最大硬币数目。示例 1:输入:piles = [2,4,1,2,7,8]输出:9解释:选出 (2, 7, 8) ,Alice 取走 8 枚硬原创 2021-08-23 11:30:33 · 118 阅读 · 0 评论 -
Leetcode 剑指 Offer 56 - II. 数组中数字出现的次数 II c#
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1一看就是字典 public int SingleNumber(int[] nums) { Dictionary<int, int> dic = new Dictionary<int, int>原创 2021-08-20 10:17:39 · 97 阅读 · 0 评论 -
Leetcode 面试题 02.03. 删除中间节点 c#
若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f示例:输入:节点 5 (位于单向链表 4->5->1->9 中)输出:不返回任何数据,从链表中删除传入的节点 5,使链表变为 4->1->9原创 2021-08-19 16:45:42 · 80 阅读 · 0 评论 -
Leetcode 1689. 十-二进制数的最少数目 c#
题目:如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 。例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是。给你一个表示十进制整数的字符串 n ,返回和为 n 的 十-二进制数 的最少数目。示例 1:输入:n = “32”输出:3解释:10 + 11 + 11 = 32示例 2:输入:n = “82734”输出:8示例 3:输入:n = “27346209830709182346”输出:9反正我是原创 2021-08-18 11:48:24 · 109 阅读 · 0 评论 -
Leetcode 剑指 Offer 17. 打印从1到最大的n位数 c#
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]今天学的第二个知识点Math.Pow()是Math类方法。此方法用于计算将数字提高到其他数字的乘方。 public int[] PrintNumbers(int n) { int end = (int)Math.Pow(10, n) - 1;原创 2021-08-17 11:38:47 · 103 阅读 · 0 评论 -
Leetcode 1455. 检查单词是否为句中其他单词的前缀 c#
给你一个字符串 sentence 作为句子并指定检索词为 searchWord ,其中句子由若干用 单个空格 分隔的单词组成。请你检查检索词 searchWord 是否为句子 sentence 中任意单词的前缀。如果 searchWord 是某一个单词的前缀,则返回句子 sentence 中该单词所对应的下标(下标从 1 开始)。如果 searchWord 是多个单词的前缀,则返回匹配的第一个单词的下标(最小下标)。如果 searchWord 不是任何单词的前缀,则返回 -1 。字符串 S 的 前原创 2021-08-17 11:22:27 · 179 阅读 · 0 评论 -
Leetcode 181. 超过经理收入的员工 SQL server
题目:Employee 表包含所有员工,他们的经理也属于员工。每个员工都有一个 Id,此外还有一列对应员工的经理的 Id。±—±------±-------±----------+| Id | Name | Salary | ManagerId |±—±------±-------±----------+| 1 | Joe | 70000 | 3 || 2 | Henry | 80000 | 4 || 3 | Sam | 60000 | N原创 2021-08-16 17:16:00 · 82 阅读 · 0 评论 -
Leetcode 1952. 三除数 c#
题目:给你一个整数 n 。如果 n 恰好有三个正除数 ,返回 true ;否则,返回 false 。如果存在整数 k ,满足 n = k * m ,那么整数 m 就是 n 的一个 除数 。示例 1:输入:n = 2输出:false解释:2 只有两个除数:1 和 2 。示例 2:输入:n = 4输出:true解释:4 有三个除数:1、2 和 4 。循环1-n。 使n和i取余等于0的数就是三除数。 public bool IsThree(int n) { int原创 2021-08-13 15:41:16 · 187 阅读 · 0 评论 -
Leetcode 344. 反转字符串 c#
题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:[“h”,“e”,“l”,“l”,“o”]输出:[“o”,“l”,“l”,“e”,“h”]示例 2:输入:[“H”,“a”,“n”,“n”,“a”,“h”]输出:[“h”,“a”,“n”,“n”,“a”,“H”]简单原创 2021-08-13 10:28:46 · 92 阅读 · 0 评论 -
Leetcode 237. 删除链表中的节点 c#
题目:请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点。传入函数的唯一参数为 要被删除的节点 。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入:head = [4,5,1,9], node = 5输出:[4,1,9]解释:给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入:head = [4,5,1,9], node = 1输出:[4,5,9]解释:给定你链表中值为 1原创 2021-08-12 18:27:45 · 88 阅读 · 0 评论 -
Leetcode 面试题 02.06. 回文链表 c#
编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true今天第一次学链表的 如果按照我自己的思路就是:先看跟2取余能否得0;然后把他转为int数组(这块让我自己写现在还写不出来),把数组分两半 num.Length /2;正循环 前一半数组 ,倒循环后一半数组,比较每个i是否相等就完事了。既然学了新东西就要用新知识做,还好能看懂。 public bool Is原创 2021-08-12 18:09:33 · 136 阅读 · 0 评论 -
Leetcode 172. 阶乘后的零 c#
题目:给定一个整数 n,返回 n! 结果尾数中零的数量。示例 1:输入: 3输出: 0解释: 3! = 6, 尾数中没有零。示例 2:输入: 5输出: 1解释: 5! = 120, 尾数中有 1 个零.下面这段代码超时。这段是我自己写的开始用int 然后范围不够用,我又找到java里的BigInteger ,我寻思这下范围够了,没想到超时了哈哈。 public static int TrailingZeroes(int n) {原创 2021-08-12 10:49:54 · 98 阅读 · 0 评论 -
Leetcode 1961. 检查字符串是否为数组前缀 c#
题目:给你一个字符串 s 和一个字符串数组 words ,请你判断 s 是否为 words 的 前缀字符串 。字符串 s 要成为 words 的 前缀字符串 ,需要满足:s 可以由 words 中的前 k(k 为 正数 )个字符串按顺序相连得到,且 k 不超过 words.length 。如果 s 是 words 的 前缀字符串 ,返回 true ;否则,返回 false 。示例 1:输入:s = “iloveleetcode”, words = [“i”,“love”,“leetcode”,“a原创 2021-08-11 11:37:21 · 127 阅读 · 0 评论