![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
Shine光
这个作者很懒,什么都没留下…
展开
-
何时我能获得LeetCodeT恤?
好奇我什么时候可以获得LeetCodeT恤,就写了一个小程序预测一下(用的Java1.8)。算我每天都登录的话,有七天连续登录奖励(一周17个积分)。每周周赛最差105(前100名的积分+参与积分),运气好能305。设计思路:逻辑问题:选了“Login everyday?”—>每周增速加17;选了“Join every week contest?”—>才能选“How man...原创 2019-02-11 15:05:07 · 2338 阅读 · 0 评论 -
LeetCode 26 删除排序数组中的重复项
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 ...原创 2018-11-28 00:05:26 · 70 阅读 · 0 评论 -
LeetCode 141 环形链表
给定一个链表,判断链表中是否有环。进阶:你能否不使用额外空间解决此题?解答:使用两个指针遍历链表,一个快指针(一次走两个),一个慢指针(一次走一个)。如果两个指针相遇,则链表中含有环形。如果快指针到达结尾,则链表中没有环路。时间复杂度:O(n)O(n)O(n)空间复杂度:O(1)O(1)O(1)/** * Definition for singly-linked list. * ...原创 2018-11-28 18:47:14 · 84 阅读 · 0 评论 -
LeetCode 70 爬楼梯
动态规划、动态规划、动态规划!!!!假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?**注意:**给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 ...原创 2018-11-28 20:23:09 · 90 阅读 · 0 评论 -
LeetCode 988 从叶结点开始的最小字符串
给定一颗根结点为 root 的二叉树,书中的每个结点都有一个从 0 到 25 的值,分别代表字母 'a' 到 'z':值 0 代表 'a',值 1 代表 'b',依此类推。找出按字典序最小的字符串,该字符串从这棵树的一个叶结点开始,到根结点结束。(小贴士:字符串中任何较短的前缀在字典序上都是较小的:例如,在字典序上 “ab” 比 “aba” 要小。叶结点是指没有子结点的结点。)解答:深度优...原创 2019-02-09 22:34:58 · 283 阅读 · 0 评论 -
LeetCode 987 二叉树的垂序遍历
给定二叉树,按垂序遍历返回其结点值。对位于 (X, Y) 的每个结点而言,其左右子结点分别位于 (X-1, Y-1) 和 (X+1, Y-1)。把一条垂线从 X = -infinity 移动到 X = +infinity ,每当该垂线与结点接触时,我们按从上到下的顺序报告结点的值( Y 坐标递减)。如果两个结点位置相同,则首先报告的结点值较小。按 X 坐标顺序返回非空报告的列表。每个报告都...原创 2019-02-09 22:35:46 · 372 阅读 · 0 评论 -
LeetCode 992 K 个不同整数的子数组
给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定独立的子数组为好子数组。(例如,[1,2,3,1,2] 中有 3 个不同的整数:1,2,以及 3。)返回 A 中好子数组的数目。示例 1:输出:A = [1,2,1,2,3], K = 2输入:7解释:恰好由 2 个不同整数组成的子数组:[1,2], [2,1], [1,2], [2,...原创 2019-02-10 19:10:14 · 1412 阅读 · 0 评论 -
LeetCode 1 两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的 两个 整数。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]解答:暴力解法:public int[...原创 2019-02-11 15:33:46 · 111 阅读 · 0 评论 -
LeetCode 2 两数相加
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...原创 2019-02-11 15:34:38 · 98 阅读 · 0 评论 -
LeetCode 3 无重复字符的最长子串
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。示例 2:输入: "bbbbb"输出: 1解释: 因为无重复字符的最长子串是 "b",所以其长度为 1。示例 3:输入: "pwwkew"输出: 3解释: 因为无重复字符的最长子串是 "wke.原创 2019-02-11 15:35:10 · 114 阅读 · 0 评论 -
LeetCode 13 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。1...原创 2019-02-11 15:39:20 · 136 阅读 · 0 评论 -
LeetCode 136 只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解答:使用异或运算处理设nums[] 中的元素分别为a, b, c, a, c,由于异或操作具有交换律和结合律...原创 2019-02-11 15:40:37 · 125 阅读 · 0 评论 -
LeetCode 9 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例 2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一个回文数。解答:c...原创 2018-11-28 00:04:08 · 78 阅读 · 0 评论 -
LeetCode 950按递增顺序显示卡牌
牌组中的每张卡牌都对应有一个唯一的整数。你可以按你想要的顺序对这套卡片进行排序。最初,这些卡牌在牌组里是正面朝下的(即,未显示状态)。现在,重复执行以下步骤,直到显示所有卡牌为止:从牌组顶部抽一张牌,显示它,然后将其从牌组中移出。如果牌组中仍有牌,则将下一张处于牌组顶部的牌放在牌组的底部。如果仍有未显示的牌,那么返回步骤 1。否则,停止行动。返回能以递增顺序显示卡牌的牌组顺序。答...原创 2018-12-02 23:30:24 · 429 阅读 · 0 评论 -
LeetCode 538 把二叉搜索树转换为累加树
给定一个二叉搜索树(Binary Search Tree),把它转换成为累加树(Greater Tree),使得每个节点的值是原来的节点值加上所有大于它的节点值之和。例如:输入: 二叉搜索树: 5 / \ 2 13输出: 转换为累加树: 18 / \...原创 2018-11-25 17:27:12 · 199 阅读 · 0 评论 -
LeetCode 686 重复叠加字符串匹配
给定两个字符串 A 和 B, 寻找重复叠加字符串A的最小次数,使得字符串B成为叠加后的字符串A的子串,如果不存在则返回 -1。举个例子,A = “abcd”,B = “cdabcdab”。答案为 3, 因为 A 重复叠加三遍后为 “abcdabcdabcd”,此时 B 是其子串;A 重复叠加两遍后为"abcdabcd",B 并不是其子串。注意:A 与 B 字符串的长度在1和10000区间范...原创 2018-11-25 17:36:05 · 127 阅读 · 0 评论 -
LeetCode 104 二叉树的最大深度
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解答:用递归的思想,各个非叶子节点返回各节点的左右子树中最大深度;叶子节点返回其所在深度...原创 2018-11-25 19:02:53 · 76 阅读 · 0 评论 -
LeetCode 21 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4解答:创建三个指针,listNode用于组建合并后的链表,head用于记录listNode的头指针。循环中的结束条件是有一个链表遍历完成,之后需要将另一个未遍...原创 2018-11-25 20:03:27 · 85 阅读 · 0 评论 -
LeetCode 23 合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[ 1->4->5, 1->3->4, 2->6]输出: 1->1->2->3->4->4->5->6解答:复用LeetCode21合并两个链表的代码,将链表0和链表1进行合并生成新的链表,然后再将新的链表与链表2合并...原创 2018-11-25 20:52:47 · 105 阅读 · 0 评论 -
Leetcode 64 最小路径和
Leetcode 64 最小路径和给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。**说明:**每次只能向下或者向右移动一步。示例:输入:[ [1,3,1], [1,5,1], [4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。解答:采用新的二维数组记录原点到该点的最小路径。cla...原创 2018-11-23 12:33:59 · 145 阅读 · 0 评论 -
LeetCode 62 不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?例如,上图是一个7 x 3 的网格。有多少可能的路径?**说明:**m 和 n 的值均不超过 100。示例 1:输入: m = 3, n = 2输出: 3解释:从左上角...原创 2018-11-23 12:36:45 · 81 阅读 · 0 评论 -
LeetCode 12 整数转罗马数字
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。1...原创 2018-11-28 21:06:30 · 90 阅读 · 0 评论 -
LeetCode 19 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?解答:遍历链表节点,使用栈存储节点。出栈n-2个节点,然后将倒数第n+1个节点...原创 2018-11-29 15:56:57 · 80 阅读 · 0 评论 -
LeetCode 674 最长连续递增序列
给定一个未经排序的整数数组,找到最长且连续的的递增序列。示例 1:输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔开。 示例 2:输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。**注意:**数组长度...原创 2018-11-29 23:27:12 · 144 阅读 · 0 评论 -
LeetCode 404 左叶子之和
计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24解答:在遍历树的左右子树的时候传入一个信号量,-1代表左遍历,+1代表右遍历。当信号量为-1,且该节点为叶子结点时,该节点为左叶子节点,将其值返回。/** * Definition for a bi...原创 2018-11-30 00:04:43 · 118 阅读 · 0 评论 -
LeetCode 949 给定数字能组成的最大时间
给定一个由 4 位数字组成的数组,返回可以设置的符合 24 小时制的最大时间。最小的 24 小时制时间是 00:00,而最大的是 23:59。从 00:00 (午夜)开始算起,过得越久,时间越大。以长度为 5 的字符串返回答案。如果不能确定有效时间,则返回空字符串。示例 1:输入:[1,2,3,4]输出:"23:41"示例 2:输入:[5,5,5,5]输出:""提示:A....原创 2018-12-02 21:33:22 · 1691 阅读 · 0 评论 -
LeetCode 951 翻转等价二叉树
我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树。只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1和 root2 给出。示例:输入:root1 = [1,2,3,4,5,6,null,null,null,7,8], root2 = [1...原创 2018-12-02 22:45:36 · 220 阅读 · 0 评论 -
LeetCode 63 不同路径2
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。**说明:**m 和 n 的值均不超过 100。示例 1:输入:[ [0,0...原创 2018-11-25 17:26:16 · 106 阅读 · 0 评论