leetcode
山椒鱼666
这个作者很懒,什么都没留下…
展开
-
leetcode题解(七十三):309. Best Time to Buy and Sell Stock with Cooldown
问买卖股票最多能收益多少,这道题和之前的不同是买卖一次之后需要经历一个冷却期public int maxProfit(int[] prices) { int sell = 0, prev_sell = 0, buy = Integer.MIN_VALUE, prev_buy; for (int price : prices) { prev_buy = buy;...原创 2019-06-03 01:57:14 · 126 阅读 · 0 评论 -
leetcode题解(三十六):85. Maximal Rectangle
给一个二维数组,找出由1组成的最大矩形Input:[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]Output: 6class Solution {public:int maximalRectangle(vector<vector<cha...原创 2019-04-24 23:00:17 · 100 阅读 · 0 评论 -
leetcode题解(六十二):221. Maximal Square
二维数组中找1构成的面积最大的矩形Example:Input:1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0Output: 4public int maximalSquare(char[][] a) { if(a.length == 0) return 0; int m = a.length, n = a[0].length, result...转载 2019-05-05 02:10:29 · 92 阅读 · 0 评论 -
leetcode题解(六十一):215. Kth Largest Element in an Array
找数组中第k大的元素可以用快排的partition函数来做public int findKthLargest(int[] nums, int k) { //打乱初始顺序是关键 shuffle(nums); k = nums.length - k; int lo = 0; int hi = nums.length - 1; ...原创 2019-05-05 02:06:43 · 107 阅读 · 0 评论 -
leetcode题解(六十):208. Implement Trie (Prefix Tree)
例子:Example:Trie trie = new Trie();trie.insert(“apple”);trie.search(“apple”); // returns truetrie.search(“app”); // returns falsetrie.startsWith(“app”); // returns truetrie.insert(“app”);...原创 2019-05-05 01:50:55 · 82 阅读 · 0 评论 -
leetcode题解(二十三):49. Group Anagrams
输入一组字符串数组,然后把由相同字母组成的字符串放在一起例子:Example:Input: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”],Output:[[“ate”,“eat”,“tea”],[“nat”,“tan”],[“bat”]]思路:拿到这个题就应该想到分治,先对各个字符串进行排序,再组合public class Soluti...原创 2019-04-20 14:32:10 · 79 阅读 · 0 评论 -
leetcode题解(二十二):48. Rotate Image
给定一个矩阵,顺时针旋转90度例子: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]]思路:先做transpose,再对调每一行的对称元素public class Sol...原创 2019-04-20 12:40:24 · 117 阅读 · 0 评论 -
leetcode题解(二十一):46. Permutations
题意:给定数组求所有排列组合典型的回溯问题例:Input: [1,2,3]Output:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]public List<List<Integer>> permute(int[] nums) { //声明一个储存答案的list,按照上面的答案应该是list里套...原创 2019-04-20 11:08:12 · 111 阅读 · 0 评论 -
leetcode题解(五十九):207. Course Schedule
课程安排,输入是课程总数,上课的方式,输出是否可行Example 1:Input: 2, [[1,0]]Output: trueExplanation: There are a total of 2 courses to take.To take course 1 you should have finished course 0. So it is possible.Example ...原创 2019-05-04 14:38:48 · 90 阅读 · 0 评论 -
leetcode题解(三十五):84. Largest Rectangle in Histogram
给一个数组代表直方图,求最大的矩形面积given height = [2,1,5,6,2,3].area = 10 unit.Example:Input: [2,1,5,6,2,3]Output: 10public static int largestRectangleArea(int[] height) { if (height == null || height.len...原创 2019-04-23 22:46:23 · 115 阅读 · 0 评论 -
leetcode题解(五十八):206. Reverse Linked List
反转链表,基本操作Example:Input: 1->2->3->4->5->NULLOutput: 5->4->3->2->1->NULLpublic ListNode reverseList(ListNode head) { /* iterative solution */ ListNode newHead =...原创 2019-05-03 13:13:01 · 94 阅读 · 0 评论 -
leetcode题解(五十七):200. Number of Islands
二维数组中数数岛的个数岛指由1构成的四周都是0(上下左右)的地方Example 1:Input:11110110101100000000Output: 1Example 2:Input:11000110000010000011Output: 3public class Solution {private int n;private int m;public...原创 2019-05-03 13:01:49 · 97 阅读 · 0 评论 -
leetcode题解(五十六):198. House Robber
抢劫,不能抢相邻两家店铺问最多能抢多少典型的动态规划问题Example 1:Input: [1,2,3,1]Output: 4Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).Total amount you can rob = 1 + 3 = 4.Example 2:Input: [2,7...原创 2019-05-03 12:50:26 · 78 阅读 · 0 评论 -
leetcode题解(五十五):169. Majority Element
这个算法流计算的课上面讲过, 就是计算一个数组中出现次数最多的元素用一个counter做加减法就可以Example 1:Input: [3,2,3]Output: 3Example 2:Input: [2,2,1,1,1,2,2]Output: 2public class Solution { public int majorityElement(int[] num) {...原创 2019-05-03 12:36:09 · 104 阅读 · 0 评论 -
leetcode题解(二十):42. Trapping Rain Water
Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.例子:Input: [0,1,0,2,1,0,1,3,2,1,2,1]Output: 6p...原创 2019-04-19 01:05:33 · 97 阅读 · 0 评论 -
leetcode题解(五十四):160. Intersection of Two Linked Lists
找两个链表的连接点public ListNode getIntersectionNode(ListNode headA, ListNode headB) { //boundary check //边界条件 if(headA == null || headB == null) return null; ListNode a = headA; Lis...原创 2019-05-02 13:32:27 · 72 阅读 · 0 评论 -
leetcode题解(五十三):155. Min Stack
最小堆可以用两个栈来实现,也可以用一个栈实现例子:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> Returns -3minStack.pop();minStack.top(); --&g...原创 2019-05-02 13:25:23 · 80 阅读 · 0 评论 -
leetcode题解(三十七):94. Binary Tree Inorder Traversal
中序遍历二叉树Input: [1,null,2,3]12/3Output: [1,3,2]顺序:左中右思路就是简单迭代,使用栈结构public List<Integer> inorderTraversal(TreeNode root) { List<Integer> list = new ArrayList<Integer>();...原创 2019-04-24 23:17:18 · 106 阅读 · 0 评论 -
leetcode题解(三十八):96. Unique Binary Search Trees
Input: 3Output: 5Explanation:Given n = 3, there are a total of 5 unique BST’s:public int numTrees(int n) { // G[n]表示n有几个可能 int [] G = new int[n+1]; G[0] = G[1] = 1; for(int i=2;...原创 2019-04-24 23:36:23 · 83 阅读 · 0 评论 -
leetcode题解(七十二):300. Longest Increasing Subsequence
題意:給出一個數組,求最長遞增子序列的長度Example:Input: [10,9,2,5,3,7,101,18]Output: 4Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.public int lengthOfLIS(int[] nums) { /...原创 2019-06-02 00:53:37 · 128 阅读 · 0 评论 -
leetcode题解(七十一):287. Find the Duplicate Number
题意:找出一个数组中唯一的重复元素Example 1:Input: [1,3,4,2,2]Output: 2Example 2:Input: [3,1,3,4,2]Output: 3比较巧妙的思路:把数组想象成链表来做,跟链表是否有环的一题解题思路很像int findDuplicate3(vector<int>& nums){ if (nums.size()...原创 2019-05-17 02:43:32 · 106 阅读 · 0 评论 -
leetcode题解(五十一):148. Sort List
单链表排序用的是归并排序的思路递归下去就好Example 1:Input: 4->2->1->3Output: 1->2->3->4Example 2:Input: -1->5->3->4->0Output: -1->0->3->4->5public class Solution { p...原创 2019-05-01 14:11:53 · 229 阅读 · 0 评论 -
leetcode题解(七十):283. Move Zeroes
public void moveZeroes(int[] nums) { if (nums == null || nums.length == 0) return; int insertPos = 0; for (int num: nums) { if (num != 0) nums[insertPos++] = num; } ...原创 2019-05-06 16:18:54 · 90 阅读 · 0 评论 -
leetcode题解(六十九):279. Perfect Squares
输入一个数,输出是他是几个数的平方和用动态规划来做public int numSquares(int n) { int[] dp = new int[n + 1]; Arrays.fill(dp, Integer.MAX_VALUE); dp[0] = 0; for(int i = 1; i <= n; ++i) { int min = Integer.MAX_VALUE;...原创 2019-05-06 16:09:38 · 96 阅读 · 0 评论 -
leetcode题解(六十八):240. Search a 2D Matrix II
这道题public class Solution { public boolean searchMatrix(int[][] matrix, int target) { if(matrix == null || matrix.length < 1 || matrix[0].length <1) { return false; ...原创 2019-05-06 15:57:38 · 150 阅读 · 0 评论 -
leetcode题解(六十七):239. Sliding Window Maximum
public int[] maxSlidingWindow(int[] a, int k) { if (a == null || k <= 0) { return new int[0]; } int n = a.length; int[] r = new int[n-k+1]; int ri = 0; // store index Deque<I...原创 2019-05-06 14:44:36 · 119 阅读 · 0 评论 -
leetcode题解(四十三):114. Flatten Binary Tree to Linked List
把二叉树变成链表看图片应该是前序遍历private TreeNode prev = null;public void flatten(TreeNode root) { if (root == null) return; flatten(root.right); flatten(root.left); root.right = prev; ...原创 2019-04-25 15:59:35 · 318 阅读 · 0 评论 -
leetcode题解(四十二):105. Construct Binary Tree from Preorder and Inorder Traversal
给出前序和中序遍历,构造二叉树通过前序遍历得到根节点,中序遍历得到左右子树,递归下去就可以了public TreeNode buildTree(int[] preorder, int[] inorder) { return helper(0, 0, inorder.length - 1, preorder, inorder);}public TreeNode helper(in...原创 2019-04-25 15:47:22 · 204 阅读 · 0 评论 -
leetcode题解(四十一):104. Maximum Depth of Binary Tree
求二叉树的深度简单题基本操作,递归思路public int maxDepth(TreeNode root) { if(root==null){ return 0; } return 1+Math.max(maxDepth(root.left),maxDepth(root.right)); }...原创 2019-04-25 15:19:47 · 99 阅读 · 0 评论 -
leetcode题解(四十):102. Binary Tree Level Order Traversal
二叉树的层序遍历按照输入输出先进先出的思路,这里用栈结构public class Solution { public List<List<Integer>> levelOrder(TreeNode root) { Queue<TreeNode> queue = new LinkedList<TreeNode>(); ...原创 2019-04-25 15:10:25 · 95 阅读 · 0 评论 -
leetcode题解(六十六):238. Product of Array Except Self
求一个数组中每一个元素除了它本身的积Example:Input: [1,2,3,4]Output: [24,12,8,6]思路:左右两边同时遍历就可以节省时间public class Solution {public int[] productExceptSelf(int[] nums) { int n = nums.length; int[] res = new i...原创 2019-05-05 14:48:42 · 88 阅读 · 0 评论 -
leetcode题解(六十五):236. Lowest Common Ancestor of a Binary Tree
二叉树两个节点的最低公共祖先public class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { if(root == null || root == p || root == q) return root; TreeNo...原创 2019-05-05 14:41:44 · 93 阅读 · 0 评论 -
leetcode题解(六十四):234. Palindrome Linked List
判断是不是回文序列,中心对称Example 1:Input: 1->2Output: falseExample 2:Input: 1->2->2->1Output: true用快慢指针,链表反转来做public boolean isPalindrome(ListNode head) { ListNode fast = head, slow = hea...原创 2019-05-05 14:34:29 · 77 阅读 · 0 评论 -
leetcode题解(六十三):226. Invert Binary Tree
转换左右子树,还是树的递归public TreeNode invertTree(TreeNode root) { if (root == null) { return null; } //递归下去 TreeNode right = invertTree(root.right); TreeNode left = invertTree(roo...原创 2019-05-05 14:29:25 · 98 阅读 · 0 评论 -
leetcode题解(三十九):101. Symmetric Tree
判断一棵二叉树是不是对称的思路:简单递归public boolean isSymmetric(TreeNode root) { return root==null || isSymmetricHelp(root.left, root.right);}private boolean isSymmetricHelp(TreeNode left, TreeNode right){ ...原创 2019-04-25 00:27:35 · 70 阅读 · 0 评论 -
leetcode题解(五十二):152. Maximum Product Subarray
题意:求最大的子数组的积一般这种题都是动态规划做的因为是乘积,所以不仅要记下最大,还要记下最小Example 1:Input: [2,3,-2,4]Output: 6Explanation: [2,3] has the largest product 6.Example 2:Input: [-2,0,-1]Output: 0Explanation: The result can...原创 2019-05-02 13:07:35 · 96 阅读 · 0 评论 -
leetcode题解(三十四):79. Word Search
在二维数组中找单词Example:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]Given word = “ABCCED”, return true.Given word = “SEE”, return true.Given word = “ABCB”, return false.public bo...原创 2019-04-23 13:26:42 · 80 阅读 · 0 评论 -
leetcode题解(三十三):78. Subsets
给数组求子集典型的回溯问题Input: nums = [1,2,3]Output:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> list =...原创 2019-04-23 13:05:22 · 66 阅读 · 0 评论 -
leetcode题解(十七):33. Search in Rotated Sorted Array
给一串旋转后的字符串,例如i.e., [0,1,2,4,5,6,7] might become [4,5,6,7,0,1,2]).查找某个数字是否在这个字符串里,如果没有返回-1,如果有返回index思路:二分查找public class Solution {public int search(int[] A, int target) { int lo = 0; int ...原创 2019-04-12 10:03:45 · 70 阅读 · 0 评论 -
leetcode题解(十四):23. Merge k Sorted Lists
题意: 合并k个有序列表public static ListNode mergeKLists(ListNode[] lists){ return partion(lists,0,lists.length-1);}public static ListNode partion(ListNode[] lists,int s,int e){ //边界条件 if(s==e) re...原创 2019-04-08 16:18:52 · 60 阅读 · 0 评论