LeetCode
「已注销」
2018.10.10努力加油,一切都会越来越好
展开
-
leetcode435
//无重叠区间class Solution { //intervals为n行2列数组 public int eraseOverlapIntervals(int[][] intervals) { if(intervals.length==0) return 0; Arrays.sort(intervals,Comparator...原创 2019-06-17 19:42:04 · 290 阅读 · 0 评论 -
约瑟夫环问题
1、题目描述已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。2、思想假设有n个人,从1到n,放入一个ArrayList中,设置开始的编号k(设为0,为第一个人),加上需要报的数减1,即得到需要出列人的索引,要注意要出列的人是不是最后...原创 2019-03-10 09:01:17 · 160 阅读 · 0 评论 -
非递归遍历二叉树 Java
非递归实现二叉树的前序遍历```public List<Integer> preorderTraversal(TreeNode root) { List<Integer> ret = new ArrayList<>(); Stack<TreeNode> stack = new Stack<>(); stack....原创 2019-03-07 00:13:43 · 1658 阅读 · 0 评论 -
LeetCode102二叉树的层次遍历
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其层次遍历结果:[[3],[9,20],[15,7]]/** * Definition for a binary tree node. * public class TreeNod...原创 2019-03-06 22:15:03 · 104 阅读 · 0 评论 -
Leetcode120三角形最小路径和
给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)class Solution { public int minimumTotal(List<List<Integer>> ...原创 2019-03-05 23:22:13 · 263 阅读 · 1 评论 -
LeetCode113路径总和2
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1/**...原创 2019-03-05 21:54:22 · 127 阅读 · 0 评论 -
Leetcode113
说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1返回:[[5,4,11,2],[5,8,4,5]]/** * Definitio...原创 2019-02-21 13:08:41 · 322 阅读 · 0 评论 -
Leetcode79单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true...原创 2019-02-25 22:49:25 · 196 阅读 · 0 评论 -
LeetCode83删除链表中重复的数字
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3/** * Definition for singly-linked list. * public class ListNode { * in...原创 2019-02-25 21:28:14 · 535 阅读 · 1 评论 -
LeetCode199二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入: [1,2,3,null,5,null,4]输出: [1, 3, 4]解释:1 <—/ 2 3 <—\ 5 4 <—/** * Definition for a binary tr...原创 2019-02-25 20:59:19 · 161 阅读 · 0 评论 -
LeetCode19 删除链表的倒数第 n 个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5./** * Definition for singly-linked list. * public class ListNode { * int...原创 2019-02-24 22:53:09 · 93 阅读 · 0 评论 -
LeetCode337打家劫舍三
在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。 除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。 如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。示例 1:输入: [3,2,3,n...原创 2019-02-24 22:03:33 · 419 阅读 · 0 评论 -
LeetCode213打家劫舍二
你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [2,3,2]输出: 3解释: 你不能...原创 2019-02-24 13:58:43 · 77 阅读 · 0 评论 -
LeetCode199二叉树的右视图
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { publ...原创 2019-03-11 15:12:16 · 206 阅读 · 0 评论 -
LeetCode204计数质数
class Solution { int count=0; public int countPrimes(int n) { for(int i=2;i<n;i++){ if(check(i)){ count++; } } return count;...原创 2019-03-11 16:04:44 · 121 阅读 · 0 评论 -
反转链表的递归写法,保证看懂
private ListNode reverse(ListNode head){ if (head == null || head.next == null) return head; ListNode temp = head.next;//保存下一个节点 ListNode newHead = reverse(h...原创 2019-05-15 23:45:33 · 6900 阅读 · 0 评论 -
leetcode136
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4显而易见的解法一class Solution { public int singleNumber(int[]...原创 2019-05-15 17:18:26 · 173 阅读 · 0 评论 -
leetcode141
给定一个链表,判断链表中是否有环。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1,2], pos = 0输出:true解释...原创 2019-04-23 23:02:11 · 278 阅读 · 0 评论 -
leetcode680
给定一个非空字符串 s,最多删除一个字符。判断是否能成为回文字符串。示例 1:输入: “aba”输出: True示例 2:输入: “abca”输出: True解释: 你可以删除c字符。class Solution { public boolean validPalindrome(String s) { int i=-1,j=s.length(); w...原创 2019-04-23 22:13:04 · 508 阅读 · 0 评论 -
leetcode167
给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2。说明:返回的下标值(index1 和 index2)不是从零开始的。你可以假设每个输入只对应唯一的答案,而且你不可以重复使用相同的元素。示例:输入: numbers = [2, 7, 11, 15], targe...原创 2019-04-23 20:02:27 · 109 阅读 · 0 评论 -
leetcode215
class Solution { public int findKthLargest(int[] nums, int k) { //利用快排的思路也可以解决 int k1=nums.length-k; int low=0,high=nums.length-1; while(low<high){ i...原创 2019-04-27 09:45:02 · 450 阅读 · 0 评论 -
LeetCode215
在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4class Solution { int [] arr=null; public int fi...原创 2019-04-27 09:17:10 · 150 阅读 · 0 评论 -
如何实现一个LRU带详细注释,保证看懂
package DAHUASHU.LeetCode;import java.util.HashMap;import java.util.Map;public class LRUCache { int capacity;//LRUcache容量 Node head; // head指向最老的 Node tail; // tail指向的是最近使用的 Map...原创 2019-04-03 16:09:49 · 186 阅读 · 0 评论 -
Leetcode2两数相加
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode addTwoNumbe...原创 2019-03-27 22:07:34 · 115 阅读 · 0 评论 -
LeetCode19删除链表的倒数第N个节点
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode removeNthFr...原创 2019-03-30 10:54:35 · 99 阅读 · 0 评论 -
Leetcode31 下一个排列
package com.huoli.spider;public class solution { public void nextPermutation(int[] nums) { int n=nums.length; if(n<=1) return; if(n==2) swap(nums,0,n-1); for(...原创 2019-03-25 14:18:57 · 106 阅读 · 0 评论 -
LeetCode107二叉树的层次遍历
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回其自底向上的层次遍历为:[[15,7],[9,20],[3]]/** * Definition for a binary tree node. * pub...原创 2019-03-11 20:13:11 · 142 阅读 · 0 评论 -
LeetCode198打家劫舍
输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4 。class Solution { public int rob(int[] nums) { if(nums==null||nums.length==0) return 0; ...原创 2019-02-24 12:19:13 · 120 阅读 · 0 评论 -
LeetCode300 最长上升子序列
给定一个无序的整数数组,找到其中最长上升子序列的长度。示例:输入: [10,9,2,5,3,7,101,18]输出: 4解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。class Solution { public int lengthOfLIS(int[] nums) { if(nums==null||nums.length==0) ...原创 2019-02-24 11:05:55 · 294 阅读 · 0 评论 -
Leetcode70爬楼梯
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶//就是那个斐波纳期数列,我的天居然前面几行提交的时候报错了,后来加上,主体是对的,自底向上class Solution { publ...原创 2019-02-24 01:51:47 · 93 阅读 · 0 评论 -
LeetCode40组合总和40
给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次。说明:所有数字(包括目标数)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [10,1,2,7,6,1,5], target = 8,所求解集为:[[1...原创 2019-02-11 15:09:48 · 261 阅读 · 0 评论 -
LeetCode39组合总和
给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。示例 1:输入: candidates = [2,3,6,7], target = 7,所求解集为:[[7]...原创 2019-02-11 14:41:18 · 255 阅读 · 2 评论 -
LeetCode21合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4最后做一道简单的链表题练手,思想很简单,加头节点的思想在链表题中很常见/** * Definition for singly-linked list. * p...原创 2019-02-10 21:55:31 · 124 阅读 · 0 评论 -
LeetCode22 括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出 n = 3,生成结果为:[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]解题思路:每个位置有两种决策,一样的跟全排列的思想,搞两个机器人,一个机器人放左括号,另外一个放右括号,而递归部分代码任然是重点,考虑到放左右括号的条件,然后,考虑...原创 2019-02-10 21:37:09 · 188 阅读 · 0 评论 -
LeetCode47全排列
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]解题思路:跟上一题基本一样,就是在装答案中先装入set去重,再遍历出来放进ans中。class Solution { List<List<Integer>> ans=new ArrayList<>(...原创 2019-02-10 20:56:58 · 435 阅读 · 0 评论 -
LeetCode46全排列
给定一个没有重复数字的序列,返回其所有可能的全排列。示例:输入: [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]解题思路:还是变形的全排列问题,idx还是记录这个位置放的数,由于这个位置要枚举每一个数,因此要用for循环和path记录当前idx放的数,核心还是递归部分的写法,利用path记录数组下标的...原创 2019-02-10 20:06:22 · 265 阅读 · 0 评论 -
LeetCode78 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例:输入: nums = [1,2,3]输出:[[3],[1],[2],[1,2,3],[1,3],[2,3],[1,2],[]]解题思路:很明显的求全排列,用递归的框架,然后设计递归参数,对于复杂的返回值都用上述的全局答案,一般有两种拼答案的方式,一种是在递归...原创 2019-02-10 19:25:39 · 211 阅读 · 0 评论 -
LeetCode105 从前序和中序构建二叉树
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7只能从前序中序或或 中序后序遍历构建,思路很简单就是扣细节,难得扣/** * Definition for ...原创 2019-02-21 20:19:39 · 193 阅读 · 0 评论 -
LeetCode112路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明: 叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 ...原创 2019-02-15 22:51:29 · 101 阅读 · 0 评论 -
LeetCode111二叉树的最小深度
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ 9 20/ 15 7返回它的最小深度 2.解题思路:就是递归跟最大值不同,要考虑数的节点只在一边的情况,有点意思,思维的全面性/** * Definition fo...原创 2019-02-15 20:58:49 · 139 阅读 · 0 评论