算法题目
文章平均质量分 76
刷题过程中的学习积累,持续成长
抓住小白白
业精于勤,荒于嬉,行成于思,毁于随。
展开
-
sql 通过lead lag获取数据连续最大条数-获取用户连续登录最长天数
一、业务需求获取每个用户连续登录的最长天数二、初始化测试数据drop table if EXISTS login_log;create table login_log ( times timestamp, user_id string);truncate table login_log;insert into login_log VALUES(from_unixtime(unix_timestamp('2022-03-16 12:00:00','yyyy-MM-dd HH:mm:ss')),原创 2022-05-14 23:08:21 · 1457 阅读 · 0 评论 -
力扣算法题-2013. 检测正方形 Java实现
题目给你一个在 X-Y 平面上的点构成的数据流。设计一个满足下述要求的算法:添加 一个在数据流中的新点到某个数据结构中。可以添加 重复 的点,并会视作不同的点进行处理。给你一个查询点,请你从数据结构中选出三个点,使这三个点和查询点一同构成一个 面积为正 的 轴对齐正方形 ,统计 满足该要求的方案数目。轴对齐正方形 是一个正方形,除四条边长度相同外,还满足每条边都与 x-轴 或 y-轴 平行或垂直。实现 DetectSquares 类:DetectSquares() 使用空数据结构初始化对象原创 2022-01-26 22:19:05 · 531 阅读 · 0 评论 -
力扣算法题-234.回文链表
题目请判断一个链表是否为回文链表。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/palindrome-linked-list思路1、首先获取链表长度;2、获取前段链表,和后段链表;3、翻转后段链表,若前段和后段链表遍历全部相等,则为回原创 2020-10-24 00:24:32 · 166 阅读 · 0 评论 -
力扣算法题-763.划分字母区间 C语言实现
题目字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一个字母只会出现在其中的一个片段。返回一个表示每个字符串片段的长度的列表。示例 1:输入:S = “ababcbacadefegdehijhklij”输出:[9,7,8]解释:划分结果为 “ababcbaca”, “defegde”, “hijhklij”。每个字母最多出现在一个片段中。像 “ababcbacadefegde”, “hijhklij” 的划分是错误的,因为划分的片段数较少。提示:S的长度在[1, 5原创 2020-10-22 17:25:05 · 327 阅读 · 0 评论 -
力扣算法题-925.长按键入 C语言实现
题目你的朋友正在使用键盘输入他的名字 name。偶尔,在键入字符 c 时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回 True。示例 1:输入:name = “alex”, typed = “aaleex”输出:true解释:‘alex’ 中的 ‘a’ 和 ‘e’ 被长按。示例 2:输入:name = “saeed”, typed = “ssaaedd”输出:false解释原创 2020-10-22 16:17:56 · 380 阅读 · 0 评论 -
力扣算法题-25.K个一组翻转链表 C语言实现
题目给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能只是单纯的改变节点内部的值,而是原创 2020-10-21 13:00:56 · 316 阅读 · 0 评论 -
力扣算法题-23.合并K个升序链表 C语言实现
题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists = []输出:[]原创 2020-10-20 21:07:50 · 486 阅读 · 0 评论 -
力扣算法题-143.重排链表 C语言实现
题目给定一个单链表 L:L0→L1→…→Ln-1→Ln ,将其重新排列后变为: L0→Ln→L1→Ln-1→L2→Ln-2→…你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:给定链表 1->2->3->4, 重新排列为 1->4->2->3.示例 2:给定链表 1->2->3->4->5, 重新排列为 1->5->2->4->3.来源:力扣(LeetCode)链接:https://l原创 2020-10-20 18:35:47 · 659 阅读 · 0 评论 -
力扣算法题-844.比较含退格的字符串 C语言实现
题目给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。示例 1:输入:S = “ab#c”, T = “ad#c”输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = “ab##”, T = “c#d#”输出:true解释:S 和 T 都会变成 “”。示例 3:输入:S = “a##c”, T = “#a#c”输出:true解释:S 和 T 都会原创 2020-10-20 14:22:12 · 575 阅读 · 0 评论 -
力扣算法题-41.缺失的第一个正数 C语言实现
题目给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。示例 1:输入: [1,2,0]输出: 3示例 2:输入: [3,4,-1,1]输出: 2示例 3:输入: [7,8,9,11,12]输出: 1提示:你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/first-missing-positive思路1、先进行数组的排序;排序函数qsort,要避免原创 2020-10-15 18:16:24 · 394 阅读 · 0 评论 -
力扣算法题-24.两两交换链表中的节点 C语言实现
题目给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[2,1,4,3]示例 2:输入:head = []输出:[]示例 3:输入:head = [1]输出:[1]提示:链表中节点的数目在范围 [0, 100] 内0 <= Node.val <= 100来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr原创 2020-10-13 17:16:49 · 298 阅读 · 0 评论 -
力扣算法题-416.分割等和子集 C语言实现
题目给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。注意:每个数组中的元素不会超过 100数组的大小不会超过 200示例 1:输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].示例 2:输入: [1, 2, 3, 5]输出: false解释: 数组不能分割成两个元素和相等的子集.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/原创 2020-10-11 23:24:12 · 530 阅读 · 0 评论 -
力扣算法题-142.环形链表II C语言实现
题目给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。进阶:你是否可以不用额外空间解决此题?示例 1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第原创 2020-10-11 16:19:26 · 192 阅读 · 0 评论 -
力扣算法题-1363.形成三的最大倍数
题目给你一个整数数组 digits,你可以通过按任意顺序连接其中某些数字来形成 3 的倍数,请你返回所能得到的最大的 3 的倍数。由于答案可能不在整数数据类型范围内,请以字符串形式返回答案。如果无法得到答案,请返回一个空字符串。示例 1:输入:digits = [8,1,9]输出:“981”示例 2:输入:digits = [8,6,7,1,0]输出:“8760”示例 3:输入:digits = [1]输出:""示例 4:输入:digits = [0,0,0,0,0,0]输出:原创 2020-10-11 01:05:54 · 1402 阅读 · 0 评论 -
力扣算法题-141.环形链表 C语言实现
题目给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。进阶:你能用 O(1)(即,常量)内存解决此问题吗?来源:力扣(LeetCode)链接:https://原创 2020-10-09 23:04:48 · 207 阅读 · 0 评论 -
力扣算法题-75.颜色分类 C语言实现
题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。你能想出一个仅使用常数空间的一趟原创 2020-10-07 15:58:56 · 478 阅读 · 0 评论 -
力扣算法题-18.四数之和 C语言实现
题目给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。注意:答案中不可以包含重复的四元组。示例:给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0。满足要求的四元组集合为:[[-1, 0, 0, 1],[-2, -1, 1, 2],[-2, 0, 0, 2]]来源:力扣原创 2020-10-07 14:29:09 · 557 阅读 · 0 评论 -
力扣算法题-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 =原创 2020-10-05 21:28:34 · 604 阅读 · 0 评论 -
力扣算法题-2.两数相加 C语言实现+Java实现
题目给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807来源:力扣(LeetCode)链接:https://leetc原创 2020-10-05 16:51:26 · 363 阅读 · 0 评论 -
力扣算法题-771.宝石与石头 C语言实现
题目给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。示例 1:输入: J = “aA”, S = “aAAbbbb”输出: 3示例 2:输入: J = “z”, S = “ZZ”输出: 0注意:S 和 J 最多含有50个字母。J 中的字符不重复。来源:力扣(LeetCode)链接:原创 2020-10-03 00:17:15 · 299 阅读 · 0 评论 -
力扣算法题-1433.检查一个字符串是否可以打破另一个字符串 C语言实现
题目给你两个字符串 s1 和 s2 ,它们长度相等,请你检查是否存在一个 s1 的排列可以打破 s2 的一个排列,或者是否存在一个 s2 的排列可以打破 s1 的一个排列。字符串 x 可以打破字符串 y (两者长度都为 n )需满足对于所有 i(在 0 到 n - 1 之间)都有 x[i] >= y[i](字典序意义下的顺序)。示例 1:输入:s1 = “abc”, s2 = “xya”输出:true解释:“ayx” 是 s2=“xya” 的一个排列,“abc” 是字符串 s1=“abc原创 2020-10-02 23:38:24 · 190 阅读 · 0 评论 -
力扣算法题-19.秋叶收藏集 C语言实现
题目小扣出去秋游,途中收集了一些红叶和黄叶,他利用这些叶子初步整理了一份秋叶收藏集 leaves, 字符串 leaves 仅包含小写字符 r 和 y, 其中字符 r 表示一片红叶,字符 y 表示一片黄叶。出于美观整齐的考虑,小扣想要将收藏集中树叶的排列调整成「红、黄、红」三部分。每部分树叶数量可以不相等,但均需大于等于 1。每次调整操作,小扣可以将一片红叶替换成黄叶或者将一片黄叶替换成红叶。请问小扣最少需要多少次调整操作才能将秋叶收藏集调整完毕。示例 1:输入:leaves = “rrryyyrry原创 2020-10-01 16:58:34 · 520 阅读 · 0 评论 -
力扣算法题-63.不同路径II C语言实现
题目一个机器人位于一个 m x n 网格的左上角 。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。说明:m 和 n 的值均不超过 100。示例 1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出: 2解释:3x3 网格的正中间有一个障碍物。从左上角到右下角一共有 2 条不同的路径:向右 -> 向右 -> 向下 -原创 2020-09-29 22:18:16 · 655 阅读 · 0 评论 -
力扣算法题-62.不同路径 C语言实现
题目一个机器人位于一个 m x n 网格的左上角 。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。问总共有多少条不同的路径?示例 1:输入: m = 3, n = 2输出: 3解释:从左上角开始,总共有 3 条路径可以到达右下角。向右 -> 向右 -> 向下向右 -> 向下 -> 向右向下 -> 向右 -> 向右示例 2:输入: m = 7, n = 3输出: 28提示:1 <= m, n <= 100题原创 2020-09-29 21:37:50 · 633 阅读 · 0 评论 -
力扣算法题-5.最长回文子串 C语言实现
题目给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindromic-substring思路1比较好想的一个思路。遍历字符串中字符,以字符串中每个字符为回文字符串中心进行判断。原创 2020-09-29 20:36:41 · 443 阅读 · 1 评论 -
力扣算法题-404.左叶子之和 C语言实现
题目计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-left-leaves思路判定左叶子的条件是:1、没有子节点;2、其母节点的左节点;满足条件的值返回即可。程序/** * Definition for a binary t原创 2020-09-28 17:14:47 · 349 阅读 · 0 评论 -
力扣算法题-32.最长有效括号 C语言实现+Java实现
括号字符串的最长有效长度原创 2020-09-28 13:46:39 · 745 阅读 · 0 评论 -
力扣算法题-617.合并二叉树 C语言实现
题目给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。你需要将他们合并为一个新的二叉树。合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新值,否则不为 NULL 的节点将直接作为新二叉树的节点。示例 1:输入: Tree 1 Tree 2 1 2原创 2020-09-23 12:40:47 · 293 阅读 · 0 评论 -
力扣算法题-968.监控二叉树 C语言实现
题目给定一个二叉树,我们在树的节点上安装摄像头。节点上的每个摄影头都可以监视其父对象、自身及其直接子对象。计算监控树的所有节点所需的最小摄像头数量。示例 1:![例1](https://img-blog.csdnimg.cn/20200922232132595.png#pic_center)输入:[0,0,null,0,0]输出:1解释:如图所示,一台摄像头足以监控所有节点。示例 2:![例2](https://img-blog.csdnimg.cn/2020092223222原创 2020-09-22 23:36:48 · 347 阅读 · 0 评论 -
力扣算法题-538.把二叉搜索树转换为累加树 C语言实现+Java实现
题目给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。 例如:输入: 原始二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \ 20 13来源:力扣(LeetCode)链接:https:原创 2020-09-21 17:06:58 · 163 阅读 · 0 评论 -
力扣算法题-78.子集 C语言实现+Java实现
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入List item欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如原创 2020-09-21 15:27:48 · 479 阅读 · 1 评论