![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
成程晨
2019.06-2019.08 实习于上海-蚂蚁金服-CTO线
2019.12-2020.06 实习于深圳-腾讯-TEG
2020.07-至今 工作于北京-FreeWheel-Forecast Team
展开
-
leetcode----36. Valid Sudoku
链接:https://leetcode.com/problems/valid-sudoku/大意:给定一个9x9的宫格,宫格中每个位置为'1'-'9'或者'.'。规定:(1)对于宫格中的每一行,不能含有重复的'1'-'9'(2)对于宫格中的每一列,不能含有重复的'1'-'9'(3)对于宫格中的每个3x3的小宫格内(共9个小宫格),不能含有重复的'1'-'9'称满足上述三...原创 2019-03-24 19:12:43 · 91 阅读 · 0 评论 -
leetcode----210. Course Schedule II
链接:https://leetcode.com/problems/course-schedule-ii/大意:给定所需要修习课程的总数numCourses,以及两门课之间的先序关系prerequisites,其中prerequisites中每个元素是一个二元组(长度为2的数组),对于任意一个二元组nums,意义为:修习nums[0]之前必须先修习nums[1]。找出一种方案可以使得满足...原创 2019-03-21 19:49:29 · 92 阅读 · 0 评论 -
leetcode----28. Implement strStr()
链接:https://leetcode.com/problems/implement-strstr/大意:找到字符串needle在字符串haystack中首次出现的位置,其中:若haystack中不含字符串needle,则返回-1若needle为空串,则返回0思路:记haystack的长度为len1,needle的长度为len2,对于字符串haystack中的每个字符K...原创 2019-03-21 20:18:16 · 94 阅读 · 0 评论 -
leetcode----39. Combination Sum
链接:https://leetcode.com/problems/combination-sum/大意:给定一个不含重复数字的数组c,以及一个目标和t(c中所有元素以及t都是正数)。在数组c中任意选任意个数字的组合,要求组合的和为t。其中,c中每个数可以被选择多次。例子:思路:回溯法。首先看一个特殊情况:如果数组c的长度为0,则自然返回的是空列表了。对数组c进行排序...原创 2019-03-25 11:48:12 · 110 阅读 · 0 评论 -
leetcode----213. House Robber II
链接:https://leetcode.com/problems/house-robber-ii/题意:有一个小偷打算去一群居民家偷钱。这些居民的家是一个环(数组表示,数组中每个元素都为正,表示该居民家中有多少钱),规定若小偷同时偷了相邻两家的钱,则会触动警报系统。求小偷在不触动警报系统的前提下最大能偷到多少金额思路:由于是一个环,也就是最后一个元素的下一个元素是第一个元素。那...原创 2019-03-21 21:17:14 · 122 阅读 · 0 评论 -
leetcode----994. Rotting Oranges
链接:https://leetcode.com/problems/rotting-oranges/题意:给定一个二维矩阵,矩阵中每个元素为0,1,2三个数中的一个。已知操作:2可以把相邻(上下左右)的1转变为2。问需要多少次操作才可以将矩阵中所有的1变为2。。。说不清楚,看它给的图吧:(红色橘子为2,黄色橘子为1,空白为0)如果到最后仍有1存在,则返回-1思路:图的BFS。...原创 2019-03-21 22:45:54 · 236 阅读 · 0 评论 -
leetcode----40. Combination Sum II
链接:https://leetcode.com/problems/combination-sum-ii/大意:给定一个数组c(c中有重复的数字)和一个目标值t。要求使用c中的数字(每一个位置的数只能被使用一次)组合,组合的和为t。求所有这样的组合。另:c中所有元素以及t都是正数。例子:思路:和前一个题思路一样,采用回溯法。前一题:https://blog.csdn.net/...原创 2019-03-25 14:47:59 · 141 阅读 · 0 评论 -
leetcode----43. Multiply Strings
链接:https://leetcode.com/problems/multiply-strings/大意:给定两个大数(以字符串的形式给定),输出两个大数的乘积(也以字符串形式表示)。规定:给定的两个大数,都为正数,除非是"0",否则这两个数都不可能是以0开头的数。例子:思路:手动模拟乘法。首先判断特殊情况:num1或者num2为"",则返回"0"将两个字符串的字符...原创 2019-03-25 16:32:44 · 108 阅读 · 0 评论 -
leetcode----24. Swap Nodes in Pairs
链接:https://leetcode.com/problems/swap-nodes-in-pairs/题意:给定一个链表,交换相邻两个链表节点(0号和1号交换,2号和3号交换),不能使用交换节点值的方法完成思路:首先,判断两种边界情况:链表为空或者链表只有一个节点,则直接返回链表即可根据测试用例解释:(没有用例感觉自己说不清,词穷......)首先,定义两个变量...原创 2019-03-22 13:07:26 · 109 阅读 · 0 评论 -
leetcode----29. Divide Two Integers
链接:https://leetcode.com/problems/divide-two-integers/大意:给定两个整数dividend和divisor,要求出divideng/divisor的结果(int型整数)。要求:不能用乘法、除法和取余运算。另:结果可能会溢出,若溢出,则返回Integer.MAX_VALUE思路:由于不能用乘除法和取余,所以可以采用加减法结合二分法...原创 2019-03-22 14:44:12 · 154 阅读 · 0 评论 -
leetcode----60. Permutation Sequence
链接:https://leetcode.com/problems/permutation-sequence/大意:给定整数n和k,要求在[1,n]所有长度为n的全排列中找出第k大的全排列。其中,1<=n<=9,1<=k<=n!。例子:思路:穷举法是个思路,但是不可取,因为时间复杂度太大。可以尝试使用数学归纳的方法解决。对于例子n=4,k=9进行分析:...原创 2019-03-29 15:09:40 · 92 阅读 · 0 评论 -
leetcode----31. Next Permutation
链接:https://leetcode.com/problems/next-permutation/大意:给定一个排列(数组表示),按自然顺序找出其下一个排列(也是用数组表示)。如果找不到其下一个排列,则返回整个数组最小的排列(也不是真的返回,只是调整数组中各个元素的顺序)。还是看它给的例子吧:思路:第一步:从左往右,找到数组中最后出现的满足前一个大于后一个的数的位置ind...原创 2019-03-22 15:33:37 · 178 阅读 · 0 评论 -
leetcode----61. Rotate List
链接:https://leetcode.com/problems/rotate-list/大意:给定一个链表头节点head以及一个非负数k,要求链表向右移动k个单位后得到的新链表。例子:思路:首先得到链表的长度len,记录链表的尾节点,并把链表的尾节点指向头节点(即构成一个循环链表)。之后 k %= len,将多轮重复的右移简化为一轮右移。原链表向右移k个位置,即相当于把...原创 2019-03-29 15:28:51 · 108 阅读 · 0 评论 -
leetcode----62. Unique Paths
链接:https://leetcode.com/problems/unique-paths/大意:给定一个二维数组的大小m*n,要求从起点(左上角)走到终点(右下角)有多少种方案。规定:每次移动只能向右移动一格或者向下移动一格。例子:思路:动态规划。到达某点 i,j 的方案数为 到达该点的上面一点 i-1,j的方案数+ 到达该点左边一点 i,j-1 的方案数。动态规划递推...原创 2019-03-29 15:49:25 · 193 阅读 · 0 评论 -
leetcode----46. Permutations
链接:https://leetcode.com/problems/permutations/大意:给定一个不含重复数字的数字,求以数组中所有元素的所有组合(在每个组合中,每个数字能且只能被使用一次)。例子:思路:回溯法。需要借助一个辅助数组boolean[] visited,用于记录每个位置的变量是否已被访问。其余思路和前几题的回溯思路类似,不再累述了。代码:cl...原创 2019-03-26 11:45:28 · 94 阅读 · 0 评论 -
leetcode----47. Permutations II
链接:https://leetcode.com/problems/permutations-ii/大意:给定一个含重复元素值的数组nums,要求以nums中所有数组成的所有组合(每个组合中每个位置上的数能且只能被使用一次),且不能有重复的组合。例子:思路:回溯法。与前一题不同的是本题数组中含有重复元素,需要剔除重复的组合。为了剔除重复的组合,需要对nums进行排序。...原创 2019-03-26 13:08:28 · 172 阅读 · 0 评论 -
leetcode----48. Rotate Image
链接:https://leetcode.com/problems/rotate-image/大意:对一个二维数组,进行顺时针90度旋转。要求:原地置换,即空间复杂度为O(1).例子:思路:数学问题,找规律...从矩阵的最外围依次往内交换元素,详细请看代码及注释代码:class Solution { public void rotate(int[][] ma...原创 2019-03-26 15:01:43 · 152 阅读 · 0 评论 -
leetcode----951. Flip Equivalent Binary Trees
链接:https://leetcode.com/problems/flip-equivalent-binary-trees/题意:定义一种操作 flip:将某一树节点的左子树和右子树互换。给定两棵树,判断两棵树之间是否可以通过flip操作来得到。例子:思路:(1)若两个都为空,则返回true(2)若一个为空一个不为空,肯定是返回false(3)若根节点的值不一样,肯...原创 2019-03-23 16:03:05 · 108 阅读 · 0 评论 -
leetcode----617. Merge Two Binary Trees
链接:https://leetcode.com/problems/merge-two-binary-trees/大意:合并两棵树,合并规则如下:(1)若两棵树对应位置都为null,则新树在该位置为null(2)若两棵树中只有一棵树在对应位置为null,则新树在该位置的值为那个在该位置非空的值(3)若两棵树在对应位置都不为null,则新树在该位置的值为两棵树在该位置的值的和...原创 2019-03-23 17:33:04 · 72 阅读 · 0 评论 -
leetcode----563. Binary Tree Tilt
链接:https://leetcode.com/problems/binary-tree-tilt/大意:对于一棵树,定义一个概念-----树节点的tilt:为该节点下左子树所有节点的值与右子树所有节点的值之间的绝对值。给定树的根节点,求该树所有节点的tilt的和。例子:(空节点的tilt为0)思路:递归。主要问题是怎么设计这个递归?首先,对于每个树节点,它需要保存两个变量...原创 2019-03-24 11:14:18 · 173 阅读 · 0 评论 -
leetcode----33. Search in Rotated Sorted Array
链接:https://leetcode.com/problems/search-in-rotated-sorted-array/大意:对于一个升序数组(数组中没有重复的两个元素),将这个数组按照其内某个位置旋转(右移)得到一个旋转数组。判断一个数target是否在旋转数组nums中。如果在数组中,则返回在数组中的位置;否则返回-1。要求时间复杂度为O(logn)。例子:思路:...原创 2019-03-24 13:10:48 · 125 阅读 · 0 评论 -
leetcode----34. Find First and Last Position of Element in Sorted Array
链接:https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/大意:给定一个有序数组(升序,有重复数字)nums以及一个待查找的数字target,返回target在数组nums中出现的首位置和尾位置组成的数组,如果target在nums中不存在,则返回[-1,-1]。要求...原创 2019-03-24 13:25:41 · 227 阅读 · 0 评论 -
leetcode----63. Unique Paths II
链接:https://leetcode.com/problems/unique-paths-ii/大意:给定一个二维整数矩阵,矩阵中的元素为0/1。1表示该位置是障碍位置。求出从起点(左上角)到达终点(右下角)有多少种方案?注意:无法越过障碍位置。例子:思路:和上一题思路一样:https://blog.csdn.net/smart_ferry/article/details...原创 2019-03-31 12:57:35 · 125 阅读 · 0 评论 -
leetcode----64. Minimum Path Sum
链接:https://leetcode.com/problems/minimum-path-sum/大意:给定一个m*n的二维整数矩阵grid(每个元素都是非负的),要求出从左上角到达右下角所经历路径中节点和最小的路径,求出其和(只能往右移动一格或者往下移动一格)。例子:思路:动态规划。 记dp[i][j]为grid[0][0]移动到dp[i - 1][j - 1]所经历路...原创 2019-03-31 13:13:18 · 97 阅读 · 0 评论 -
leetcode----71. Simplify Path
链接:https://leetcode.com/problems/simplify-path/大意:简化Unix路径(路径以全路径形式给出)。例子:思路:栈思想。首先,对给定的全路径字符串path以"/"分割为字符串数组。创建一个顺序栈(顺序栈比链式栈速度更快),依次对比字符串数组中的每个元素,判断当前元素是该入栈还是栈顶元素弹出还是栈不变继续查看下一个字符串。可有...原创 2019-03-31 13:42:23 · 104 阅读 · 0 评论 -
leetcode----49. Group Anagrams
链接:https://leetcode.com/problems/group-anagrams/大意:给一个字符串数组,要求你把字符串满足以下规则的字符串进行归类。规则为:若两个字符串含有相同的字符,则为一类(不要求字符位置相同)。另:字符串中的字符都是小写字母。例子:思路:若两个字符串含有相同的字符,则为一类。也就是若两个字符串为一类,则这两个字符串按照字符的字典顺序排序...原创 2019-03-27 11:37:39 · 94 阅读 · 0 评论 -
leetcode----50. Pow(x, n)
链接:https://leetcode.com/problems/powx-n/大意:给定一个double型的x,以及一个整数n。求x^n。从他的例子可以看到:保留的是5位小数,也就是说0.000001将会被转成0... 例子:思路:采用分治以及递归的思想解决,思想与之前的一个题解求两数的商:https://blog.csdn.net/smart_ferry/article...原创 2019-03-27 14:08:50 · 128 阅读 · 0 评论 -
leetcode----54. Spiral Matrix
链接:https://leetcode.com/problems/spiral-matrix/大意:给定一个二维数组,对数组进行螺旋遍历(具体什么是螺旋遍历,请看例子)。例子:思路:与之前的二维数组顺时针旋转90度类似:https://blog.csdn.net/smart_ferry/article/details/88820560也是从最外围往内遍历,具体思路看代...原创 2019-03-27 14:28:36 · 112 阅读 · 0 评论 -
leetcode----96. Unique Binary Search Trees
链接:https://leetcode.com/problems/unique-binary-search-trees/大意:给定一个整数n,以1~n为树节点元素值构建BST。求有多少种BST思路:动态规划。假设 n = k时有dp[k]种可能形式,则当n = k + 1时,对根顶点分类讨论 1. 当根顶点为k+1时,此时左子树有k个数,右子树有0个数。而这k个数刚...原创 2019-04-10 14:18:04 · 105 阅读 · 0 评论 -
leetcode----95. Unique Binary Search Trees II
链接:https://leetcode.com/problems/unique-binary-search-trees-ii/大意:给定一个整数n,要求出以1~n为树节点值的所有BST(所有树的根节点)思路:一开始想着用回溯...回了半天,没解决(好菜啊...)随后看了通过的代码,发现是使用分治+递归。认真地看了看,真的是巧妙啊。。。 再一次感觉自己好菜啊。。。代码...原创 2019-04-10 16:20:20 · 90 阅读 · 0 评论 -
leetcode----73. Set Matrix Zeroes
链接:https://leetcode.com/problems/set-matrix-zeroes/大意:给定一个二维数组,二维数组中每个元素为1或者0。要求把原二维数组中每个0所在的行和列的元素都变为0。最佳解法为O(1)空间复杂度。例子:思路:使用两个一维数组rows以及cols存储原二维数组中元素为0的行和列(即若matrix[i][j] == 0,则rows[i]...原创 2019-04-01 14:34:46 · 116 阅读 · 0 评论 -
leetcode----74. Search a 2D Matrix
链接:https://leetcode.com/problems/search-a-2d-matrix/大意:在这样的一个二维数组m中查找一个数是否存在:m中每一行的元素为递增,每一行的第一个元素都比上一行的最后一个元素大。例子:思路:从第0行开始,找到第一个在该行的最后一个数大于或等于t的行。之后在该行中进行二分查找。时间复杂度O(m[0].length),空间复杂度O(...原创 2019-04-01 14:50:15 · 96 阅读 · 0 评论 -
leetcode----75. Sort Colors
链接:https://leetcode.com/problems/sort-colors/大意:给定一个数组nums,其内元素由0,1,2组成。对数组排序,要求按0,1,2的顺序排序。不准使用额外空间,即空间复杂度为O(1)。并且只准遍历一次数组。例子:思路:记录两个变量,first1以及first2。分别表示已排序数组中第一个1以及第一个2所在的位置(知道第一个2也就知道...原创 2019-04-01 15:18:21 · 124 阅读 · 2 评论 -
leetcode----55. Jump Game
链接:https://leetcode.com/problems/jump-game/大意:给定一个数组nums,数组中的每个元素nums[i]表示在该位置i最多可向前(右)跳nums[i]个距离。求:从起点0能否最终跳到终点nums.length - 1。例子:思路:动态规划。逆推动归 从终点往起点逆推记min为可以跳到最后位置且离最后位置最远的位置若当前位置i...原创 2019-03-28 11:48:25 · 122 阅读 · 0 评论 -
leetcode----98. Validate Binary Search Tree
链接:https://leetcode.com/problems/validate-binary-search-tree/大意:给定一棵二叉树,判断该二叉树是否为BST(搜索二叉树)思路:对二叉树进行中序遍历,得到中序遍历序列。如果中序遍历序列是严格递增,则二叉树BST。代码:/** * Definition for a binary tree node. * p...原创 2019-04-11 10:10:41 · 84 阅读 · 0 评论 -
leetcode----102. Binary Tree Level Order Traversal
链接:https://leetcode.com/problems/binary-tree-level-order-traversal/大意:层次遍历二叉树。要求按层次从左到右输出每层的节点值。例子:思路:层次遍历,使用两个变量ll以及l记录当前层的最后一个节点和下一层加入到队列中的元素代码:/** * Definition for a binary tree n...原创 2019-04-11 10:28:40 · 83 阅读 · 0 评论 -
leetcode----103. Binary Tree Zigzag Level Order Traversal
链接:https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/大意:以‘Z’字形按层次遍历打印二叉树的节点值。例子:思路:与上一题思路一样,只不过需要加一个判断当前是从左往右遍历还是从右往左遍历。这里我使用了个小技巧:构建的是一个链表tmp存储节点值。如果当前层为奇数层(根节点为第一层...原创 2019-04-11 10:38:12 · 107 阅读 · 0 评论 -
leetcode----56. Merge Intervals
链接:https://leetcode.com/problems/merge-intervals/大意:给定由一些区间(Interval)组成的类,要求合并所有重叠的区间。例子:思路:先对所有区间按照区间的起点由小到大排序。记interval1和interval2为两个相邻区间(interval1.start <= interval2.start)。若inte...原创 2019-03-28 13:27:20 · 143 阅读 · 0 评论 -
leetcode----59. Spiral Matrix II
链接:https://leetcode.com/problems/spiral-matrix-ii/大意:给定一个正整数n,要求返回一个二维矩阵nxn。其中矩阵的每个元素螺旋式递增产生。例子:思路:和之前的螺旋打印二维数组元素思路类似,这里就不再累述。螺旋打印二维数组:https://blog.csdn.net/smart_ferry/article/details/888...原创 2019-03-28 14:24:52 · 81 阅读 · 0 评论 -
leetcode----77. Combinations
链接:https://leetcode.com/problems/combinations/大意:给定一个整数n和一个整数k,在[1,n]中取出k个数作为组合,返回所有的组合。例子:思路:回溯法。优化使用剪枝代码:class Solution { public List<List<Integer>> combine(int n, ...原创 2019-04-02 10:12:37 · 105 阅读 · 0 评论