LeetCode
Growing_way
重新开始,亲爱哒自己,要加油!既然这样,就好好爱自己!
展开
-
Leetcode __1512. 好数对的数目
问题描述给你一个整数数组 nums 。如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。返回好数对的数目。输入:nums = [1,2,3,1,1,3]输出:4解释:有 4 组好数对,分别是 (0,3), (0,4), (3,4), (2,5) ,下标从 0 开始输入:nums = [1,1,1,1]输出:6解释:数组中的每组数字都是好数对输入:nums = [1,2,3]输出:0提示:1 <=原创 2020-07-23 15:53:20 · 244 阅读 · 0 评论 -
Leetcode __1480. 一维数组的动态和
问题描述给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。请返回 nums 的动态和。输入:nums = [1,2,3,4]输出:[1,3,6,10]解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。输入:nums = [1,1,1,1,1]输出:[1,2,3,4,5]解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。解题思路经过实例原创 2020-07-23 11:18:37 · 255 阅读 · 0 评论 -
Leetcode __807. 保持城市天际线
问题描述在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。建筑物高度可以增加的最大总和是多少?...原创 2018-10-21 15:32:03 · 265 阅读 · 0 评论 -
Leetcode __637. 二叉树的层平均值
问题描述给定一个非空二叉树, 返回一个由每层节点平均值组成的数组.示例 1:输入:3/ 9 20/ 15 7输出: [3, 14.5, 11]解释:第0层的平均值是 3, 第1层是 14.5, 第2层是 11. 因此返回 [3, 14.5, 11].注意:节点值的范围在32位有符号整数范围内。解题思路树结构的 层序,第一反应的思路就是层序遍历的思想:通过Qu...原创 2018-10-17 12:36:03 · 199 阅读 · 0 评论 -
Leetcode __136. 只出现一次的数字
问题描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题思路一般这种不使用额外空间,时间复杂度低的,用按位运算比较多知识点异或相同数字异或为0不同数...原创 2018-10-16 22:13:37 · 157 阅读 · 0 评论 -
Leetcode __206. 反转链表
问题描述反转一个单链表。示例:输入: 1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;5-&amp;gt;NULL输出: 5-&amp;gt;4-&amp;gt;3-&amp;gt;2-&amp;gt;1-&amp;gt;NULL进阶:你可以迭代或递归地反转链表。你能否用两种方法解决这道题?原创 2018-10-16 14:54:28 · 246 阅读 · 0 评论 -
Leetcode __700. 二叉搜索树中的搜索
问题描述给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树: 4 / \ 2 7 / \1 3和值: 2你应该返回如下子树: 2 / \ 1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应...原创 2018-10-16 08:21:14 · 315 阅读 · 0 评论 -
Leetcode __872. 叶子相似的树
问题描述请考虑一颗二叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。提示:给定的两颗树可能会有 1 ...原创 2018-10-18 18:35:08 · 233 阅读 · 0 评论 -
Leetcode __257. 二叉树的所有路径
问题描述给定一个二叉树,返回所有从根节点到叶子节点的路径。说明: 叶子节点是指没有子节点的节点。示例:输入:1/ 2 35输出: [“1->2->5”, “1->3”]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3解题思路看到的时候想到的就是先序遍历,但是怎么根据先序遍历实现呢?其实我理解先序遍历,就是...原创 2018-10-18 14:53:48 · 295 阅读 · 0 评论 -
Leetcode __876. 链表的中间结点
问题描述给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。注意,我们返回了一个 ListNode 类型的对象 ans,这样:ans.val = 3, ans.n...原创 2018-10-15 11:59:36 · 171 阅读 · 0 评论 -
Leetcode __13. 罗马数字转整数
问题描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的...原创 2018-10-15 10:07:15 · 167 阅读 · 0 评论 -
Leetcode __349. 两个数组的交集
问题描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [9,4]说明:输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。解题思路将两个数组都放入set中去重,在以siz...原创 2018-10-14 17:58:40 · 308 阅读 · 0 评论 -
Leetcode __766. 托普利茨矩阵
问题描述如果一个矩阵的每一方向由左上到右下的对角线上具有相同元素,那么这个矩阵是托普利茨矩阵。给定一个 M x N 的矩阵,当且仅当它是托普利茨矩阵时返回 True。示例 1:输入:matrix = [[1,2,3,4],[5,1,2,3],[9,5,1,2]]输出: True解释:在上述矩阵中, 其对角线为:“[9]”, “[5, 5]”, “[1, 1, 1]”, “...原创 2018-10-17 15:13:44 · 194 阅读 · 0 评论 -
Leetcode __54. 螺旋矩阵
问题描述给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。示例 1:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,3,6,9,8,7,4,5]示例 2:输入:[[1, 2, 3, 4],[5, 6, 7, 8],[9,10,11,12]]输出: [1,2,3,...原创 2018-10-22 18:12:41 · 362 阅读 · 0 评论 -
Leetcode __59. 螺旋矩阵 II
问题描述给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]解题思路不要怕码放,一圈一圈转,一个边一个边遍历边界值为闭区间实现class Solution { public int[][] generateMatrix...原创 2018-10-22 18:41:59 · 185 阅读 · 0 评论 -
Leetcode __169. 求众数
问题描述给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在众数。示例 1:输入: [3,2,3]输出: 3示例 2:输入: [2,2,1,1,1,2,2]输出: 2解题思路最常规的做法:把每个元素个数求出来,再判断个数>n/2的,即为所求比较巧妙的做法:取一个元素标识,一样的...原创 2018-10-30 17:53:37 · 137 阅读 · 0 评论 -
Leetcode __22. 括号生成
问题描述给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()"]解题思路左括号不为0,消耗左括号右括号不为0,且大于左括号,则消耗右括号都为0,则出栈,存到list中,直到最后出栈结束。...原创 2018-10-31 17:54:10 · 163 阅读 · 0 评论 -
Leetcode __283. 移动零
问题描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。解题思路思想挺巧妙的,值得记录一下题目中要求只能在原有的数组中操作,且不申请额外数组,操作次数要少理解:相对顺序:就是除去0外,原有的元...原创 2018-10-31 14:21:21 · 125 阅读 · 0 评论 -
Leetcode __14. 最长公共前缀
问题描述编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 “”。示例 1:输入: [“flower”,“flow”,“flight”]输出: “fl”示例 2:输入: [“dog”,“racecar”,“car”]输出: “”解释: 输入不存在公共前缀。说明:所有输入只包含小写字母 a-z 。解题思路首先是边界值的考虑,除了参数判断外,这里...原创 2018-10-29 15:51:52 · 158 阅读 · 0 评论 -
Leetcode __28. 实现strStr()
问题描述实现 strStr() 函数。给定一个 haystack 字符串和一个 needle 字符串,在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在,则返回 -1。示例 1:输入: haystack = “hello”, needle = “ll”输出: 2示例 2:输入: haystack = “aaaaa”, needle =...原创 2018-10-29 11:45:24 · 155 阅读 · 0 评论 -
Leetcode __682. 棒球比赛
问题描述你现在是棒球比赛记录员。给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2. “+”(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3. “D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4. “C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,...原创 2018-10-29 11:00:24 · 221 阅读 · 0 评论 -
Leetcode __67. 二进制求和
问题描述给定两个二进制字符串,返回他们的和(用二进制表示)。输入为非空字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”解题思路两个数,最后一位对齐做加和运算,sum为每次对齐位置上加和sum%2为加和之后的值,如(1+0)%2=1,(1+...原创 2018-10-23 18:47:33 · 195 阅读 · 0 评论 -
Leetcode __338. 比特位计数
问题描述给定一个非负整数 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)内用一趟扫描做到吗?要求算法的空间复杂度...原创 2018-10-21 17:31:53 · 354 阅读 · 0 评论 -
Leetcode __78. 子集
问题描述给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解题思路一位一位的往上叠加,比如对于题目中给的例子[1,2,3]来说,最开始是空集,那么我们现在要处理1,就在空集上加1...原创 2018-10-21 17:21:22 · 142 阅读 · 0 评论 -
Leetcode __724. 寻找数组的中心索引
问题描述给定一个整数类型的数组 nums,请编写一个能够返回数组“中心索引”的方法。我们是这样定义数组中心索引的:数组中心索引的左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心索引,那么我们应该返回 -1。如果数组有多个中心索引,那么我们应该返回最靠近左边的那一个。示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出: 3解释:索引3 (nums...原创 2018-10-23 13:20:29 · 234 阅读 · 0 评论 -
Leetcode __922. 按奇偶排序数组 II
问题描述给定一个非负整数数组 A, A 中一半整数是奇数,一半整数是偶数。对数组进行排序,以便当 A[i] 为奇数时,i 也是奇数;当 A[i] 为偶数时, i 也是偶数。你可以返回任何满足上述条件的数组作为答案。示例:输入:[4,2,5,7]输出:[4,5,2,7]解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。提示:2 &lt;= A.lengt...原创 2018-10-14 16:45:42 · 3622 阅读 · 2 评论 -
Leetcode __232. 用栈实现队列
问题描述使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2); queue.peek(); // 返回 1queue.p...原创 2018-10-14 12:56:25 · 175 阅读 · 0 评论 -
Leetcode __429. N叉树的层序遍历
问题描述给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个 3叉树 :返回其层序遍历:[[1],[3,2,4],[5,6]]说明:树的深度不会超过 1000。树的节点总数不会超过 5000。解题思路跟之前做过的二叉树的层序遍历是一样的,顺序是从上到下,从左到右从上到下:不需要额外操作,list一个一个放就可以维护该顺序从左到右:...原创 2018-10-13 18:35:09 · 1027 阅读 · 0 评论 -
Leetcode __561. 数组拆分
问题描述给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从1 到 n 的 min(ai, bi) 总和最大。示例 1:输入: [1,4,3,2]输出: 4解释: n 等于 2, 最大总和为 4 = min(1, 2) + min(3, 4).提示:n 是正整数,范围在 [1,...原创 2018-09-06 17:12:17 · 147 阅读 · 0 评论 -
Leetcode __811. 子域名访问计数
问题描述一个网站域名,如”discuss.leetcode.com”,包含了多个子域名。作为顶级域名,常用的有”com”,下一级则有”leetcode.com”,最低的一级为”discuss.leetcode.com”。当我们访问域名”discuss.leetcode.com”时,也同时访问了其父域名”leetcode.com”以及顶级域名 “com”。给定一个带访问次数和域名的组合,要求...原创 2018-09-03 21:50:49 · 311 阅读 · 0 评论 -
Leetcode __171. Excel表列序号
问题描述给定一个Excel表格中的列名称,返回其相应的列序号。例如, A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28 ...示例 1:输入: "A"输出: 1示例 2:输入: "AB"输出: 28示例 3:...原创 2018-09-05 15:37:29 · 204 阅读 · 0 评论 -
Leetcode __867. 转置矩阵
问题描述给定一个矩阵 A, 返回 A 的转置矩阵。 矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]提示:1 &lt;= A....原创 2018-09-05 12:07:08 · 152 阅读 · 0 评论 -
Leetcode __590. N叉树的后序遍历
问题描述给定一个N叉树,返回其节点值的后序遍历。 例如,给定一个 3叉树 : 返回其后序遍历: [5,6,3,2,4,1]. 说明: 递归法很简单,你可以使用迭代法完成此题吗?思路与二叉树的后序遍历的思路一致, 前序、后序,中序,只不过打印数字或者存数字的位置不同而已实现/*// Definition for a Node.class Node { ...原创 2018-09-11 15:31:35 · 697 阅读 · 0 评论 -
Leetcode __589. N叉树的前序遍历
问题描述给定一个N叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 : 返回其前序遍历: [1,3,5,6,2,4]。 说明: 递归法很简单,你可以使用迭代法完成此题吗?思路树的相关题,用递归是最简单的前序遍历,就是递归之前打印,或者存入数值实现/*// Definition for a Node.class Node { pub...原创 2018-09-11 15:24:23 · 484 阅读 · 0 评论 -
Leetcode __559. N叉树的最大深度
问题描述给定一个N叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。例如,给定一个 3叉树 : 我们应返回其最大深度,3。说明: 树的深度不会超过 1000。 树的节点总不会超过 5000。思路跟二叉树的思路是一致的N叉树的最大深度,即子树深度最大的+1即为所求实现/*// Definition for a Nod...原创 2018-09-11 14:34:58 · 393 阅读 · 0 评论 -
Leetcode __226. 翻转二叉树
问题描述翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1思路第一个想法就是递归(感觉对于二叉树而言,递归是最好做的)数为空的时候直接返回null不为空的时候,就好像一个交换位...原创 2018-09-04 11:25:17 · 230 阅读 · 0 评论 -
Leetcode __104. 二叉树的最大深度
问题描述给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。思路明确树已经建好,只需查深度即可对于每个节点处理相同的操作...原创 2018-09-04 09:58:21 · 144 阅读 · 0 评论 -
Leetcode __转换成小写字母
问题描述:实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。示例 1:输入: “Hello” 输出: “hello” 示例 2:输入: “here” 输出: “here” 示例 3:输入: “LOVELY” 输出: “lovely”想法遍历字符串charAt(i),取每一位...原创 2018-08-20 19:05:35 · 565 阅读 · 0 评论 -
Leetcode __821. 字符的最短距离
问题描述给定一个字符串 S 和一个字符 C。返回一个代表字符串 S 中每个字符到字符串 S 中的字符 C 的最短距离的数组。 示例 1:输入: S = &quot;loveleetcode&quot;, C = 'e'输出: [3, 2, 1, 0, 1, 0, 0, 1, 2, 2, 1, 0]说明: - 字符串 S 的长度范围为 [1, 10000]。 - C 是一个单字符,且保证是字...原创 2018-08-22 18:01:12 · 504 阅读 · 0 评论 -
Leetcode __521. 最长特殊序列 Ⅰ
问题描述给定两个字符串,你需要从这两个字符串中找出最长的特殊序列。最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。子序列可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。输入为两个字符串,输出最长特殊序列的长度。如果不存在,则返回 -1。示例 :输入: "aba",...原创 2018-09-06 18:02:06 · 173 阅读 · 0 评论