![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
郑大那只鸟
一只迷途中的大学生
展开
-
2021-10-14 每日一题 229. 求众数 II c语言
给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 示例 1:输入:[3,2,3]输出:[3]示例 2:输入:nums = [1]输出:[1]示例 3:输入:[1,1,1,3,3,2,2,2]输出:[1,2] 提示: 1 <= nums.length <= 5 * 104 -109 <= nums[i] <= 109来源:力扣(LeetCode)链接:https://leetcode原创 2021-10-22 11:14:58 · 282 阅读 · 0 评论 -
86. 分隔链表
86. 分隔链表给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。示例 1:输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]提示:链表中节点的数目在范围 [0, 200] 内-100 <= Node.val <= 100-200 <= x <= 200/** * Defin原创 2021-03-27 20:26:29 · 140 阅读 · 1 评论 -
78. 子集 c语言
78. 子集给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1:输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例 2:输入:nums = [0]输出:[[],[0]] 提示:1 <= nums.length <= 10-10 <= nums[i] <= 10原创 2021-03-27 15:51:17 · 452 阅读 · 0 评论 -
61. 旋转链表
旋转链表给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 100 0 <= k <= 2 * 109/** * Definition for singly-linked list. * struct ListNode { * in..原创 2021-03-27 10:45:57 · 76 阅读 · 0 评论 -
131. 分割回文串 要多刷
分割回文串给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例 1:输入:s = “aab”输出:[[“a”,“a”,“b”],[“aa”,“b”]] 示例 2:输入:s = “a”输出:[[“a”]]提示:1 <= s.length <= 16 s 仅由小写英文字母组成 通过次数96,254提交次数132,313 在真实的面试中遇到过这道题?/** * Re..原创 2021-03-27 09:25:42 · 89 阅读 · 0 评论 -
1047. 删除字符串中的所有相邻重复项
删除字符串中的所有相邻重复项给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca” 输出:“ca”解释: 例如,在 “abbaca” 中,我们可以删除 “bb”由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa”可以执行重复项删除操作,所以最后的字符串为..原创 2021-03-26 09:58:56 · 74 阅读 · 0 评论 -
82. 删除排序链表中的重复元素 II c语言
删除排序链表中的重复元素 II存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。返回同样按升序排列的结果链表/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* deleteDupli..原创 2021-03-25 16:25:11 · 149 阅读 · 0 评论 -
401. 二进制手表 多刷
二进制手表二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。/** * Note: The returned array must be malloced, assume caller calls free(). */ int hammingWeight(int n) { int result=0; while(n) { result+=n&..原创 2021-03-24 20:45:58 · 81 阅读 · 0 评论 -
456. 132模式 需要二刷
132模式给你一个整数数组 nums ,数组中共有 n 个整数。132 模式的子序列 由三个整数 nums[i]、nums[j] 和 nums[k] 组成,并同时满足:i < j < k 和 nums[i] < nums[k] < nums[j] 。如果 nums 中存在 132 模式的子序列 ,返回 true ;否则,返回 false 。进阶:很容易想到时间复杂度为 O(n^2) 的解决方案,你可以设计一个时间复杂度为 O(n logn) 或 O(n) 的解决方案吗?..原创 2021-03-24 16:47:10 · 81 阅读 · 0 评论 -
338. 比特位计数 c语言
比特位计数 给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2 输出: [0,1,1] 示例 2:输入: 5 输出: [0,1,1,2,1,2] 进阶:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。 你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++ 中的_..原创 2021-03-22 16:52:53 · 324 阅读 · 0 评论 -
191. 位1的个数 c语言
191. 位1的个数编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。提示:请注意,在某些语言(如Java)中,没有无符号整数类型。在这种情况下,输入和输出都将被指定为有符号整数类型,并且不应影响您的实现,因为无论整数是有符号的还是无符号的,其内部的二进制表示形式都是相同的。在 Java 中,编译器使用二进制补码记法来表示有符号整数。因此,在上面的 示例 3 中,输入表示有符号整数 -3。示例 1:输入:0000000.原创 2021-03-22 10:11:36 · 112 阅读 · 0 评论 -
503. 下一个更大元素 II(需要多刷)
下一个更大元素 II给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1] 输出: [2,-1,2] 解释: 第一个 1 的下一个更大的数是 2; 数字 2 找不到下一个更大的数; 第二个1 的下一个最大的数需要循环搜索,结果也是 2。 注意: 输入数组的长度不会超过 10..原创 2021-03-21 14:49:02 · 65 阅读 · 0 评论 -
150. 逆波兰表达式求值 根据 逆波兰表示法,求表达式的值。
逆波兰表达式求值 根据 逆波兰表示法,求表达式的值。有效的算符包括 +、-、*、/ 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。 给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入:tokens = [“2”,“1”,"+",“3”,"*"] 输出:9 解释:该算式转化为常见的中缀算术表达式为:((2 + 1) *3) = 9 示例 2:输入:tokens = [“4”,“13”,“5”,"/",..原创 2021-03-21 13:14:16 · 472 阅读 · 0 评论 -
73. 矩阵置零 c语言
矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。进阶:一个直观的解决方案是使用 O(mn) 的额外空间,但这并不是一个好的解决方案。 一个简单的改进方案是使用 O(m + n)的额外空间,但这仍然不是最好的解决方案。 你能想出一个仅使用常量空间的解决方案吗?示例 1:输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]] 示例2:输入:..原创 2021-03-21 11:21:04 · 1147 阅读 · 0 评论 -
92. 反转链表 IIC语言
反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL通过次数115,960提交次数219,660来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-linked-list-ii著作权归领扣网原创 2021-03-18 15:52:18 · 133 阅读 · 0 评论 -
115不同的子序列 C语言
不同的子序列 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,“ACE” 是 “ABCDE”的一个子序列,而 “AEC” 不是)题目数据保证答案符合 32 位带符号整数范围。示例 1:输入:s = “rabbbit”, t = “rabbit” 输出:3 解释: 如下图所示, 有 3 种可以从 s 中得到 “rabbit”的方案。 (上箭头符号 ^ ..原创 2021-03-17 09:49:51 · 107 阅读 · 0 评论 -
54. 螺旋矩阵
螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。/** * Note: The returned array must be malloced, assume caller calls free(). */int* spiralOrder(int** matrix, int matrixSize, int* matrixColSize, int* returnSize){ if(matrixSize==0||matrixCol..原创 2021-03-16 13:13:43 · 44 阅读 · 0 评论 -
59. 螺旋矩阵 II
螺旋矩阵 II 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。/** * Return an array of arrays of size *returnSize. * The sizes of the arrays are returned as *returnColumnSizes array. * Note: Both returned array and *columnSizes array mus..原创 2021-03-16 11:07:21 · 88 阅读 · 0 评论 -
35. 搜索插入位置
搜索插入位置 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 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 通过次数334,698提交次数711,503int searchInsert(int* nums, in..原创 2021-03-13 13:16:20 · 53 阅读 · 0 评论 -
705. 设计哈希集合 C语言
设计哈希集合 不使用任何内建的哈希表库设计一个哈希集合(HashSet)。实现 MyHashSet 类:void add(key) 向哈希集合中插入值 key 。 bool contains(key) 返回哈希集合中是否存在这个值 key 。void remove(key) 将给定值 key 从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。 示例:输入: [“MyHashSet”, “add”, “add”, “contains”, “contains”, “add”,“cont..原创 2021-03-13 11:45:21 · 400 阅读 · 0 评论 -
计算并返回 x 的平方根,其中 x 是非负整数。
实现 int sqrt(int x) 函数。x 的平方根 实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。示例 1:输入: 4 输出: 2 示例 2:输入: 8 输出: 2 说明: 8 的平方根是 2.82842…,由于返回类型是整数,小数部分将被舍去。int mySqrt(int x){ //if(x==0) return 0; if(x==1) return 1.原创 2021-03-12 16:24:09 · 1003 阅读 · 1 评论 -
基本计算器 II
给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。 示例 1:输入:s = “3+2*2” 输出:7 示例 2:输入:s = " 3/2 " 输出:1 示例 3:输入:s = " 3+5 / 2 " 输出:5提示:1 <= s.length <= 3 * 105 s 由整数和算符 (’+’, ‘-’, ‘*’, ‘/’) 组成,中间由一些空格隔开 s表示一个 有效表达式 表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1].原创 2021-03-11 21:49:45 · 137 阅读 · 0 评论 -
替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1:输入:s = “We are happy.” 输出:“We%20are%20happy.”char* replaceSpace(char* s){ int count = 0; int num_blank = 0; while(s[count]!='\0') { if(s[count]==' ') { num_blank++; } .原创 2021-03-03 15:39:04 · 130 阅读 · 1 评论 -
8. 字符串转换整数 (atoi) c语言
不断吸取他人的长处,来补足自己的弱点 加油请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi函数)。函数 myAtoi(string s) 的算法如下:读入字符串并丢弃无用的前导空格 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。如果两者都不存在,则假定结果为正。 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。将前面步原创 2021-02-26 21:13:03 · 187 阅读 · 0 评论 -
卡牌分组 C语言
给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。 示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入...原创 2020-03-27 21:10:34 · 265 阅读 · 0 评论 -
丑数三 C语言
long min(long a, long b) {return a<b?a:b; } long LCM(long a,long b){ long Multi = a * b; //求最小公倍数 while(b > 0){ long tmp = a % b; a = b; b = tmp...原创 2020-03-01 15:13:42 · 297 阅读 · 0 评论 -
丑数
编写一个程序,找出第 n 个丑数。丑数就是只包含质因数 2, 3, 5 的正整数。示例:输入: n = 10输出: 12解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ugly-number-ii著作权归领扣网络所有。商业转载请联系官方授权...原创 2020-02-28 15:37:41 · 120 阅读 · 0 评论 -
删除排序数组中的重复数组 C语言
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:...原创 2020-02-27 19:07:01 · 377 阅读 · 0 评论 -
摆动序列 牛解法
下面一段代码搬运领扣大佬的代码,真的很牛逼 ,,,,收藏纪念一下class Solution {public int wiggleMaxLength(int[] nums) {int n = nums.length;if (n < 2) {return n;}int up = 1;int down = 1;for (int i = 1; i < n; i++) {...原创 2020-02-26 21:13:25 · 93 阅读 · 0 评论 -
摆动序列 贪心算法 C语言
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5]和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个...原创 2020-02-26 21:02:32 · 771 阅读 · 0 评论 -
领扣 接雨水 C语言
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水如下图所示上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。输入: [0,1,0,2,1,0,1,3,2,1,2,1]输出: 6来源:力扣(LeetCode)链接:...原创 2020-02-22 12:49:42 · 241 阅读 · 0 评论 -
最长回文子串之动态规划(C语言版)
这个动态规划的方法是在暴力的基础上改良而来的,但怎么说呢!我写出来的结果也不是很好,空间和时间都没有中心扩展方法好最长回文子串之动态规划法动态规划分析代码过程表述(结合代码看)代码和成果展示动态规划分析如何想到的 当然,你要是一个练题练得久了,自然就知道该采用动态规划,这就是 学霸手感 。不过再牛X也是从小白过来的,且听我娓娓道来,首先普通人先想到的是暴力法,(不懂的可以搜一下这...原创 2020-01-05 16:45:15 · 913 阅读 · 0 评论 -
最长回文子串C语言版 方法一
这道题第一次 写的时候老是堆栈出错,找不出错误,原因就是最后一句返回,如果单独把结果输出,则结果是正确的,也是很迷,搞了好久也不知道是怎么回事. 问题:就在于整个输出的时候一直报错! 不想了,但我敢肯定程序一定是正确的,因为我把自己的代码和题解对照了。后来看题解的过程中发现,有更加省内存的方法,那就是不申请新的空间,只在原来的数组上修改。妙啊!分享出来给大家 :第二个代码段。大致思路是不变...原创 2019-12-27 20:47:59 · 765 阅读 · 0 评论 -
c语言区间调度(贪心)之用最少数量的箭引爆气球
区间调度算法:贪心算法题目描述流程图代码展示运行结果相关原理题目描述在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了。开始坐标总是小于结束坐标。平面内最多存在104个气球。一支弓箭可以沿着x轴从不同点完全垂直地射出。在坐标x处射出一支箭,若有一个气球的直径的开始和结束坐标...原创 2019-12-08 11:43:56 · 359 阅读 · 0 评论