
mid
Rudy Chan
这个作者很懒,什么都没留下…
展开
-
leetcode739. Daily Temperatures(数组从后往前遍历)
Given a list of daily temperatures T, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which...原创 2019-10-01 12:50:50 · 180 阅读 · 0 评论 -
leetcode114. 二叉树展开为链表(递归)
给定一个二叉树,原地将它展开为链表。例如,给定二叉树1/ 2 5/ \ 3 4 6将其展开为:123456先右后左/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * ...转载 2019-07-20 14:42:12 · 166 阅读 · 0 评论 -
leetcode98. 验证二叉搜索树(递归)
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。首先将结点的值与上界和下界(如果有)比较。然后,对左子树和右子树递归进行该过程。class Solution { public boolean help(TreeNode root,I...转载 2019-07-24 14:40:17 · 346 阅读 · 0 评论 -
leetcode406. 根据身高重建队列(排序后插入)
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。注意:总人数少于1100人。示例输入:[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]输出:[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]] ...转载 2019-07-24 09:53:01 · 374 阅读 · 0 评论 -
leetcode48. 旋转图像
给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix ...原创 2019-07-18 15:02:03 · 93 阅读 · 0 评论 -
leetcode39. 组合总和(回溯法)
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[[7]...原创 2019-07-18 13:53:28 · 94 阅读 · 0 评论 -
leetcode338. 比特位计数
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]找规律class Solution { public int[] countBits(int num) { if(num==0) re...原创 2019-07-18 10:35:24 · 140 阅读 · 0 评论 -
leetcode34. 在排序数组中查找元素的第一个和最后一个位置(二分法)
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。你的算法时间复杂度必须是 O(log n) 级别。如果数组中不存在目标值,返回 [-1, -1]。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: [3,4]示例 2:输入: nums = [5,7,7,8,8,10], targ...原创 2019-07-01 14:13:57 · 111 阅读 · 0 评论 -
leetcode55. 跳跃游戏(贪婪)
给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 从位置 0 到 1 跳 1 步, 然后跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最...转载 2019-07-15 11:26:35 · 168 阅读 · 0 评论 -
leetcode50. Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数。折半计算class Solution { public double myPow(double x, int n) { if (n == 0) { return (double) 1; } if (n == 1) { return x...原创 2019-07-05 14:14:41 · 83 阅读 · 0 评论 -
leetcode64. 最小路径和(dp)
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 7解释: 因为路径 1→3→1→1→1 的总和最小。从右下往左上扩散public class Solution { public int minPathSum...转载 2019-07-20 16:14:22 · 152 阅读 · 0 评论 -
leetcode22. 括号生成(递归)
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]class Solution { public List<String> generateParenthesis(int n) { ...原创 2019-08-19 06:18:57 · 110 阅读 · 0 评论 -
leetcode253. Meeting Rooms II(greedy)
Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],…] (si < ei), find the minimum number of conference rooms required.Example 1:Input: [[0, 30],[5, 10],[1...原创 2019-10-01 09:28:09 · 224 阅读 · 0 评论 -
leetcode366. Find Leaves of Binary Tree(递归)
Given a binary tree, collect a tree’s nodes as if you were doing this: Collect and remove all leaves, repeat until the tree is empty.Example:Input: [1,2,3,4,5] 1 / \ 2 3 / \ ...原创 2019-09-13 16:59:50 · 273 阅读 · 0 评论 -
leetcode364. Nested List Weight Sum II
Example 1:Input: [[1,1],2,[1,1]]Output: 8Explanation: Four 1’s at depth 1, one 2 at depth 2.Example 2:Input: [1,[4,[6]]]Output: 17Explanation: One 1 at depth 3, one 4 at depth 2, and one 6 at d...原创 2019-09-10 12:41:33 · 151 阅读 · 0 评论 -
leetcode362. Design Hit Counter(队列)
Design a hit counter which counts the number of hits received in the past 5 minutes.Each function accepts a timestamp parameter (in seconds granularity) and you may assume that calls are being made t...原创 2019-09-09 14:04:49 · 246 阅读 · 0 评论 -
leetcode146. LRU缓存机制(LinkedHashMap)
!!!背下来运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。获取数据 get(key) - 如果密钥 (key) 存在于缓存中,则获取密钥的值(总是正数),否则返回 -1。写入数据 put(key, value) - 如果密钥不存在,则写入其数据值。当缓存容量达到上限时,它应该在写入新数据之前删除最...原创 2019-08-31 07:12:11 · 180 阅读 · 0 评论 -
leetcode300. 最长上升子序列(dp)
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。O(n^2)做法:动态规划,dp[i]存到第i个并且选择第i个的最长序列长度;结果是Max(dp[0],dp[1]…dp[n-1],所以用maxans存结果if(nums[i]>nums[...原创 2019-08-31 04:27:34 · 117 阅读 · 0 评论 -
leetcode 股票系列 121, 122, 123, 309, 118,714(dp)
leetcode121 ez:题目:一次交易(找出最大差值)做法:最小值记录到目前为止的最小值,res记录到目前为止最大利润。遍历一遍找到最大值。class Solution { public int maxProfit(int[] prices) { int min=Integer.MAX_VALUE; int res=0; fo...原创 2019-08-29 06:33:41 · 273 阅读 · 0 评论 -
leetcode102. 二叉树的层次遍历(dfs 递归)
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]添加level标签class Solution { List<List<Integer>> levels = new ArrayList<...原创 2019-08-18 07:38:15 · 185 阅读 · 0 评论 -
leetcode24 Swap Nodes in Pairs(递归)
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例:给定 1->2->3->4, 你应该返回 2->1->4->3.class Solution { public ListNode swapPairs(ListNode head) { if(head==nu...原创 2019-08-10 11:29:49 · 215 阅读 · 0 评论 -
leetcode29. 两数相除(二分法)
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均为 32 位有符号...原创 2019-06-30 14:32:06 · 353 阅读 · 0 评论 -
leetcode322. 零钱兑换(dp)
给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1class Solu...转载 2019-07-10 16:20:30 · 105 阅读 · 0 评论 -
leetcode134. 加油站(贪心)
在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1。说明:如果题目有解,该答案即为唯一答案。输入数组均为非空数组,且长度相同。输入数组中的元素均为非...转载 2019-07-10 15:05:28 · 131 阅读 · 0 评论 -
leetcode46. 全排列(递归)
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]class Solution { public List<List<Integer>> permute(int[] nums) { List&...原创 2019-05-29 10:09:17 · 229 阅读 · 0 评论 -
leetcode59. 螺旋矩阵 II
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入: 3输出:[[ 1, 2, 3 ],[ 8, 9, 4 ],[ 7, 6, 5 ]]按圈顺序打印class Solution { public int[][] generateMatrix(int n) { int[][] nums=new i...原创 2019-05-29 09:27:44 · 79 阅读 · 0 评论 -
leetcode142. 环形链表 II(快慢指针)
给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。/** * Definition for singly-linked list. * class ListNode { * int...原创 2019-06-06 08:05:52 · 87 阅读 · 0 评论 -
leetcode61. 旋转链表
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5-&...原创 2019-06-06 07:42:49 · 79 阅读 · 0 评论 -
leetcode54. 螺旋矩阵
给定一个包含 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,4,8,1...转载 2019-06-06 06:55:33 · 87 阅读 · 0 评论 -
leetcode63. 不同路径 II(dp)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?和62题比多了障碍。边界时候判断来路是否走得通,碰到障碍的话dp[i][j]=0class Solution { public ...原创 2019-06-06 05:52:57 · 128 阅读 · 0 评论 -
leetcode62. 不同路径(dp)
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。问总共有多少条不同的路径?class Solution { public int uniquePaths(int m, int n) { int[][] dp=new int[m][n...原创 2019-06-06 05:21:01 · 136 阅读 · 0 评论 -
leetcode90. 子集 II(递归)
给定一个可能包含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: [1,2,2]输出:[[2],[1],[1,2,2],[2,2],[1,2],[]]class Solution { public List<List<Integer>> subsetsWithDup(int[] nu...原创 2019-05-29 06:59:49 · 135 阅读 · 0 评论 -
leetcode78. 子集(递归)
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]] [1,2,3,4] ...原创 2019-05-29 06:42:36 · 167 阅读 · 0 评论 -
leetcode89. 格雷编码
格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 -...转载 2019-06-01 06:34:12 · 170 阅读 · 0 评论 -
leetcode230. 二叉搜索树中第K小的元素(递归 java 中序遍历)
递归 java 中序遍历给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。说明:你可以假设 k 总是有效的,1 ≤ k ≤ 二叉搜索树元素个数。class Solution { private int count=1; private int res; public int kthSmallest(TreeNode ...原创 2019-06-03 04:29:27 · 580 阅读 · 0 评论 -
leetcode19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.我们注意到这个问题可以容易地简化成另一个问题:删除从列表开头数起的第 (L - n + 1)(L−n+1) 个结点,其中 LL 是列表的长度。只要我们找到列表...转载 2019-06-29 12:09:17 · 109 阅读 · 0 评论 -
leetcode384. 打乱数组(洗牌算法)
打乱一个没有重复元素的数组。示例:// 以数字集合 1, 2 和 3 初始化数组。int[] nums = {1,2,3};Solution solution = new Solution(nums);// 打乱数组 [1,2,3] 并返回结果。任何 [1,2,3]的排列返回的概率应该相同。solution.shuffle();// 重设数组到它的初始状态[1,2,3]。solut...原创 2019-07-04 11:07:19 · 882 阅读 · 0 评论 -
leetcode94. 二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,3,2]/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * Tr...原创 2019-06-28 11:46:17 · 107 阅读 · 0 评论 -
leetcode75. 颜色分类(三指针)
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]class Solution { public void so...原创 2019-07-09 11:50:38 · 130 阅读 · 0 评论 -
leetcode347. 前K个高频元素(Hashmap+桶排序)
输入: nums = [1,1,1,2,2,3], k = 2输出: [1,2]示例 2:输入: nums = [1], k = 1输出: [1]先用HashMap记录频率,再用 list数组中每一个位置为这个数出现的次数 值为出现次数这么多的数,再从后往前遍历class Solution { public List<Integer> topKFrequent(in...原创 2019-07-08 12:06:25 · 189 阅读 · 0 评论