LeetCode
SupermanIT
这个作者很懒,什么都没留下…
展开
-
200. Number of Islands 岛屿数量 (C++和Java解法)
Input: grid = [ ["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"]]Output: 3题目大意:1代表土地,0代表水,一个岛屿是由四面环水的土地组成,求岛屿的数量。如上例中含3个岛屿。解题思路:典型的回溯法(DFS)求解。DFS逻辑:目的是搜索完某个岛屿所有为1的所有区域。访问标志visited[i][j]设为true,再..原创 2020-08-09 09:25:59 · 229 阅读 · 0 评论 -
11. Container With Most Water盛水最多的容器(C++ 和 Java解法)
Givennnon-negative integersa1,a2, ...,an, where each represents a point at coordinate (i,ai).nvertical lines are drawn such that the two endpoints of lineiis at (i,ai) and (i, 0). Find two lines, which together with x-axis forms a container, s...原创 2020-08-02 16:12:43 · 218 阅读 · 0 评论 -
62. Unique Paths(C++ 和 Java解法)
解题思路:刚开始我使用递归解法,然而超时了。因此改用动态规划解法,时间复杂度O(m * n)。数组dp[i][j]值 代表从起点(0, 0)至(i, j)的路径数。因为机器人只能向下移动或者向右移动,所以动态方程dp[i][j] =dp[i - 1][j] +dp[i][j - 1],即左一格和上一格的路径数相加。C++解法class Solution {public: int uniquePaths(int m, int n) { int dp[...原创 2020-08-01 16:53:02 · 211 阅读 · 0 评论 -
102. Binary Tree Level Order Traversal(C++和Java实现二叉树层序遍历)
Given a binary tree, return thelevel ordertraversal of its nodes' values. (ie, from left to right, level by level).For example:Given binary tree[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7return its level order traversal as:...原创 2020-07-04 22:04:28 · 137 阅读 · 0 评论 -
39. Combination Sum(C++ 和 Java解法)
从candidates找到组合,使得组合内的数字总和等于target,某一个数字能够重复。Input: candidates = [2,3,5], target = 8,A solution set is:[ [2,2,2,2], [2,3,3], [3,5]]典型排列组合的变形,递归穷举所有情况。大家一定要掌握DFS(深度搜索)法,也叫做递归法,回溯法求解。因为DFS能够穷举所有情况,达到求解所有可能解的要求。八皇后问题也是经典的DFS问题。解题思路:先对candid...原创 2020-07-03 10:43:45 · 182 阅读 · 0 评论 -
48. Rotate Image(C++ 和 Java解法)
Given input matrix = [ [1,2,3], [4,5,6], [7,8,9]],rotate the input matrix in-place such that it becomes:[ [7,4,1], [8,5,2], [9,6,3]]题目要求不能额外开辟另一个2D矩阵,不然直接把第n列放到第n行就行了。解题思路:先求原矩阵的转置矩阵(以对角线进行对称)[ ...原创 2020-06-26 11:06:54 · 166 阅读 · 0 评论 -
49. Group Anagrams(C++和Java解法)
给定字符串数组,将anagrams(颠倒字母而成的单词)分为同一组。Example:Input: ["eat", "tea", "tan", "ate", "nat", "bat"],Output:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]解题思路:为了能够辨别anagrams,我们需要将每一个字符串排序,如"eat"->"aet","ate"->"aet",这样就能比较两个顺序不同的字符串了。排序后,我..原创 2020-06-26 10:02:50 · 212 阅读 · 0 评论 -
283. Move Zeroes(C++ 和 Java解法)
本小白华中科技大学在读研究生,自然语言处理方向。现每日一更LeetCodeTop 100 Liked Questions, 旨在于通过通俗易懂的画风和诸位计算机朋友们一起成长呀,不局限某题,争取举一反三,所有Questions均呈上C++和Java解法,不足之处多多指正,共同学习。Example:Input: [0,1,0,3,12]Output: [1,3,12,0,0]Note:You must do thisin-placewithout making a copy ...原创 2020-06-23 14:24:19 · 175 阅读 · 0 评论 -
169. Majority Element(C++ 和 Java解法)
本小白华中科技大学在读研究生,自然语言处理方向。现每日一更LeetCodeTop 100 Liked Questions, 旨在于通过通俗易懂的画风和诸位计算机朋友们一起成长呀,不局限某题,争取举一反三,所有Questions均呈上C++和Java解法,不足之处多多指正,共同学习。这种题目要熟练掌握数据结构,类似题见Top K Frequent Elements解题思路一:首先想到利用map,key代表元素值,value代表元素出现的次数,因为题目保证总有一个元素出现次数大于n/2,所...原创 2020-06-22 11:19:24 · 148 阅读 · 0 评论 -
230. Kth Smallest Element in a BST(C++ 和 Java)
解题思路一:O(n)利用二叉搜索树BST的特性,左子树值都小于根节点,右子树值大于根节点,所以使用中序遍历,当遍历到第k个节点就是第k个最小的节点。以下代码依然遍历了整个BST,有兴趣的同学可以修改一下,遍历到第k个节点就结束,可以提高算法效率。class Solution {public: int result; int t = 0; void inTraverse(TreeNode* node, int k){ //中序遍历原创 2020-06-21 11:39:02 · 135 阅读 · 0 评论 -
226. Invert Binary Tree(C++ 和 Java解法)
本小白华中科技大学在读研究生,自然语言处理方向。现每日一更LeetCodeTop 100 Liked Questions, 旨在于通过通俗易懂的画风和诸位计算机朋友们一起成长呀,不局限某题,争取举一反三,所有Questions均呈上C++和Java解法,不足之处多多指正,共同学习。Example:Input: 4 / \ 2 7 / \ / \1 3 6 9Output: 4 / \ 7 2 / \...原创 2020-06-10 19:40:16 · 195 阅读 · 0 评论 -
46. Permutations(用C++和Java求排列组合)
Example:Input: [1,2,3]Output:[ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1]]典型求排列组合,该题思路非常重要,考题非常常见。大家一定要掌握DFS(深度搜索)法,也叫做递归法,回溯法求解。因为DFS能够穷举所有情况,达到求解所有可能解的要求。八皇后问题也是经典的DFS问题。解题思路:因为求所有排列组合,自然想到DFS,因为递归能够穷举所有情况,而递归重要的是由结束条件..原创 2020-06-14 11:55:48 · 218 阅读 · 0 评论 -
78. Subsets(C++ 和 Java回溯法)
Example:Input: nums = [1,2,3]Output:[ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], []]典型排列组合的变形,递归穷举所有情况。大家一定要掌握DFS(深度搜索)法,也叫做递归法,回溯法求解。因为DFS能够穷举所有情况,达到求解所有可能解的要求。八皇后问题也是经典的DFS问题。解题思路:利用DFS列举所有情况。递归结束条件:i == length - 1,即处理到...原创 2020-06-19 16:02:45 · 165 阅读 · 0 评论 -
238. Product of Array Except Self(C++ 和 Java解法)
Example:Input: [1,2,3,4]Output: [24,12,8,6]leetcode提示不能用除法,保证O(n)时间复杂度解题思路:leftProduct[]存储左乘,rightProduct[]存储右乘。如leftProduct[2]代表3的左乘是 1 * 2 = 2;rightProduct[2]代表3的右乘是4;result[3] = 2 * 4 = 8.C++版本vector<int> productExceptSelf(vec..原创 2020-06-20 21:11:44 · 148 阅读 · 0 评论