LeetCode
日常刷题
Hard Coder
生命不息,代码不止
展开
-
LeetCode刷题进阶之相同的树(100)
一、题目演示示例:二、测试代码//深度优先搜索/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeN原创 2021-03-16 09:13:32 · 173 阅读 · 0 评论 -
LeetCode刷题进阶之两棵二叉搜索树中的所有元素(1305)
一、题目演示示例:二、测试代码//前序遍历/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<Integer> getAl原创 2021-03-16 08:21:43 · 144 阅读 · 0 评论 -
LeetCode刷题进阶之搜索插入位置(35)
一、题目演示示例:二、测试代码//方法一 利用ArrayList求解class Solution { public int searchInsert(int[] nums, int target) { int index=0; for(int i=0;i<nums.length;i++) { if(nums[i]==target)//正常情况 { retu原创 2021-02-28 16:04:10 · 133 阅读 · 1 评论 -
LeetCode刷题进阶之有效的字母异位词(242)
一、题目二、测试代码//方法一class Solution { public boolean isAnagram(String s, String t) { if(s.length()!=t.length())//两个字符串长度不相等直接返回false { return false; } char[] ch1=s.toCharArray();//toCharArray()方法将字符串转换为字符数组原创 2021-02-28 15:11:10 · 132 阅读 · 1 评论 -
LeetCode刷题进阶之二进制求和(67)
一、题目二、测试代码三、运行结果原创 2021-02-28 14:49:47 · 105 阅读 · 0 评论 -
LeetCode刷题进阶之托普利茨矩阵(766)
一、题目演示示例:二、测试代码//双重for循环遍历class Solution { public boolean isToeplitzMatrix(int[][] matrix) { for (int i = 1; i < matrix.length; i++) {//二维矩阵的行 for (int j = 1; j < matrix[0].length; j++) {//二维矩阵的列 if (mat原创 2021-02-28 14:06:57 · 117 阅读 · 0 评论 -
LeetCode刷题进阶之转置矩阵 (867)
一、题目演示示例:二、测试代码//暴力解法class Solution { public int[][] transpose(int[][] matrix) { int[][] res=new int[matrix[0].length][matrix.length]; for(int i=0;i<matrix.length;i++){//二维矩阵的行 for(int j=0;j<matrix[0].length;j++)原创 2021-02-28 13:38:44 · 170 阅读 · 0 评论 -
LeetCode刷题进阶之单调数列 (896)
一、题目演示示例:二、测试代码//两次遍历class Solution { public boolean isMonotonic(int[] A) { boolean flag=false;//判断是否为单调数列的标志位 if(A[0]<=A[A.length-1]){//若数列为递增数列 for(int i=0;i<A.length-1;++i){ if(A[i]>A[i+1]){原创 2021-02-28 13:17:10 · 150 阅读 · 0 评论 -
LeetCode刷题进阶之二叉搜索树的第K大节点 (剑指Offer 54)
一、题目演示示例:二、测试代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { List<Integer> list=new ArrayList&l原创 2021-02-12 10:32:15 · 120 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树的层平均值 (637)
一、题目演示示例:二、测试代码//方法一 广度优先搜索/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<Double>原创 2021-02-11 10:42:02 · 144 阅读 · 1 评论 -
LeetCode刷题进阶之N叉树的最大深度 (102)
一、题目演示示例:输入:root = [1,null,3,2,4,null,5,6]输出:3输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:5二、测试代码/*// Definition for a Node.class Node { public int val; public List<Node&g原创 2021-02-10 15:24:22 · 107 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树展开为链表 (114)
一、题目演示示例:二、测试代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left,原创 2021-02-10 15:04:44 · 147 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树中第二小的节点 (671)
一、题目演示示例:二、测试代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left,原创 2021-02-10 14:32:59 · 156 阅读 · 0 评论 -
LeetCode刷题进阶之二叉搜索树中第K小的元素 (230)
一、题目演示示例:二、测试代码//方法一 前序遍历和Collections.sort库函数排序/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } *原创 2021-02-10 12:53:44 · 162 阅读 · 0 评论 -
LeetCode刷题进阶之二叉搜索树中的插入操作 (701)
一、题目演示示例:二、测试代码//方法一 迭代/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeN原创 2021-02-10 11:17:56 · 133 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树搜索树中的搜索 (700)
一、题目演示示例:二、测试代码//方法一 递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNo原创 2021-02-10 10:46:42 · 202 阅读 · 0 评论 -
LeetCode刷题进阶之层数最深叶子结点的和 (1302)
一、题目演示示例:二、测试代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int deepestLeavesSum(TreeNode roo原创 2021-02-10 09:49:43 · 215 阅读 · 0 评论 -
LeetCode刷题进阶之完全二叉树的节点个数 (222)
一、题目演示示例:二、测试代码//方法一 递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int countNodes(TreeNode原创 2021-02-10 09:17:49 · 112 阅读 · 1 评论 -
LeetCode刷题进阶之从上到下打印二叉树(剑指Offer 32 - I)
一、题目演示示例:二、测试代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int[] levelOrder(TreeNode root) {原创 2021-02-09 09:52:00 · 122 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树的最大深度/ 二叉树的深度 (104/剑指 Offer 55 - I)
一、题目演示示例:二、测试代码//方法一 递归(DFS)/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, T原创 2021-02-07 22:22:57 · 100 阅读 · 0 评论 -
LeetCode刷题进阶之N叉树的前序遍历 (589)
一、题目演示示例:二、测试代码//方法一 递归/*// Definition for a Node.class Node { public int val; public List<Node> children; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, List<Node> _child原创 2021-02-05 21:27:02 · 157 阅读 · 0 评论 -
LeetCode刷题进阶之N叉树的层序遍历 (429)
一、题目演示示例:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]输出:[[1],[2,3,4,5],[6,7,8,9,10],[11,12,13],[14]]二、测试代码/*// Definition for a Nod原创 2021-02-05 20:15:00 · 145 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树的层序遍历 II (107)
一、题目演示示例:二、测试代码//方法一 调用LinkedList的addFirst/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List&原创 2021-02-05 19:41:06 · 146 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树的层序遍历/从上到下打印二叉树 II (102 / 剑指Offer 32 -II)
一、题目演示示例:二、测试代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public List<List<Integer>> le原创 2021-02-05 17:27:24 · 145 阅读 · 0 评论 -
LeetCode刷题进阶之子数组最大平均数 I (643)
一、题目演示示例:二、测试代码class Solution { public double findMaxAverage(int[] nums, int k) { int sum=0; int n=nums.length; for(int i=0; i<k;i++) {//先计算出前k个数组元素之和 sum+=nums[i]; } int maxSum=sum;//假设前k个数组元原创 2021-02-05 16:48:55 · 160 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树的前序遍历(144)
一、题目演示示例:二、测试代码//方法一 递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeN原创 2021-02-03 22:15:14 · 125 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树的中序遍历(94)
一、题目演示示例:二、测试代码//方法一 递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeN原创 2021-02-03 22:01:11 · 231 阅读 · 0 评论 -
LeetCode刷题进阶之二叉树的后序遍历(145)
一、题目演示示例:二、测试代码//方法一 递归/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNo原创 2021-02-03 21:42:08 · 168 阅读 · 0 评论 -
LeetCode刷题进阶之重复N次的元素(961)
一、题目演示示例:二、测试代码//HashMapclass Solution { public int repeatedNTimes(int[] A) { int count=A.length/2;//重复次数 int res=0; HashMap<Integer,Integer> map=new HashMap<>(); for(int i=0;i<A.length;i++){原创 2021-02-01 09:21:55 · 131 阅读 · 0 评论 -
LeetCode刷题进阶之独一无二的出现次数(1207)
一、题目演示示例:二、测试代码class Solution { public boolean uniqueOccurrences(int[] arr) { boolean flag=false; HashMap<Integer,Integer> map=new HashMap<>(); HashSet<Integer> set=new HashSet<>(); for(int i原创 2021-02-01 09:21:11 · 145 阅读 · 0 评论 -
LeetCode刷题进阶之删除链表的节点(剑指Offer 18)
一、题目演示示例:二、测试代码//方法一 单指针/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode deleteNode(ListNode head, int val) {原创 2021-02-01 09:19:35 · 170 阅读 · 0 评论 -
LeetCode刷题进阶之合并两个有序链表(21)/合并两个排序的链表(剑指Offer 25)
一、题目二、测试代码解法一:递归1、终止条件:两条链表分别名为 l1 和 l2,当 l1 为空或 l2 为空时结束;2、返回值:每一层调用都返回排序好的链表头;3、递归内容:如果 l1 的 val 值更小,则将 l1.next 与排序好的链表头相接,l2 同理。/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListN原创 2021-01-31 19:53:06 · 163 阅读 · 0 评论 -
LeetCode刷题进阶之排序链表(148)
一、题目演示示例:二、测试代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this原创 2021-01-31 19:34:16 · 127 阅读 · 0 评论 -
LeetCode刷题进阶之每日温度(739)
一、题目二、测试代码//方法一 暴力解法双重for循环class Solution { public int[] dailyTemperatures(int[] T) { int[] res=new int[T.length]; for(int i=0;i<T.length;i++){ for(int j=i+1;j<T.length;j++){ if(T[j]>T[i]){原创 2021-01-28 22:03:07 · 179 阅读 · 0 评论 -
LeetCode刷题进阶之文件夹操作日志搜集器(1598)
一、题目演示示例:二、测试代码class Solution { public int minOperations(String[] logs) { Stack<String> stack=new Stack<>(); for(int i=0;i<logs.length;i++){ if(logs[i].equals("./")){//遇到"./"不进行操作 continu原创 2021-01-28 20:55:17 · 164 阅读 · 0 评论 -
LeetCode刷题进阶之删除字符串中的所有相邻重复项(1047)
一、题目演示示例:二、测试代码//方法一 栈和ArrayListclass Solution { public String removeDuplicates(String S) { Stack<Character> stack=new Stack<>(); String str=""; List<Character> list=new ArrayList<>(); for(c原创 2021-01-28 19:54:49 · 186 阅读 · 0 评论 -
LeetCode刷题进阶之平衡括号字符串的最少插入次数(1541)
一、题目演示示例:二、测试代码class Solution { public int minInsertions(String s) { int need1=0,need2=0;//need1表示所需左括号数量,need2表示所需右括号数量 for(int i=0;i<s.length();i++){ if(s.charAt(i)=='('){ need2+=2;//一个左括号需要两个右括号即右括原创 2021-01-28 19:10:57 · 317 阅读 · 0 评论 -
LeetCode刷题进阶之使括号有效的最少添加(921)
一、题目演示示例:二、测试代码//辅助栈class Solution { public int minAddToMakeValid(String S) { Stack<Character> stack=new Stack<>(); for(char c:S.toCharArray()){//遍历符号串 if(c=='('){//遇见左括号直接入栈 stack.push(c);原创 2021-01-28 17:05:50 · 207 阅读 · 0 评论 -
LeetCode刷题进阶之删除最外层的括号(1021)
一、题目演示示例:二、测试代码// 单调栈class Solution { public String removeOuterParentheses(String S) { Stack<String> stack=new Stack<>(); StringBuilder sb=new StringBuilder(); for(char c:S.toCharArray()){//遍历符号串 if原创 2021-01-28 16:01:08 · 141 阅读 · 0 评论 -
LeetCode刷题进阶之最长连续递增序列(674)
一、题目演示示例:二、测试代码//一次遍历class Solution { public int findLengthOfLCIS(int[] nums) { if(nums.length <= 1)//特殊情况数组长度为1,最长连续递增序列即为1 { return nums.length; } int ans = 1;//ans表示最大值 int count = 1;//cou原创 2021-01-24 19:38:58 · 121 阅读 · 0 评论