
LetCode Top100
丘山一郎
这个作者很懒,什么都没留下…
展开
-
Letcode-Top 100链表专题
Letcode Top 100链表专题原创 2023-02-10 13:40:05 · 325 阅读 · 1 评论 -
Letcode-Top 100 简单题目
letcode top 100原创 2022-10-22 18:33:36 · 841 阅读 · 0 评论 -
Letcode动态规划专题-困难
Letcode动态规划专题-困难原创 2022-09-18 15:46:00 · 284 阅读 · 0 评论 -
BFS-DFS-回溯-递归 (通俗易懂版)
DFS BFS 回溯 递归原创 2022-08-19 17:48:01 · 425 阅读 · 0 评论 -
Letcode-Top 100动态规划
LetCoce Top 100原创 2022-06-26 10:36:32 · 186 阅读 · 0 评论 -
200.岛屿数量
class Solution { public int numIslands(char[][] grid) { if(grid == null || grid.length == 0) { return 0; } if (grid[0] == null || grid[0].length == 0) { return 0; } int row = grid.length;.原创 2021-01-26 10:14:53 · 95 阅读 · 0 评论 -
133. 克隆图
/*// Definition for a Node.class Node { public int val; public List<Node> neighbors; public Node() { val = 0; neighbors = new ArrayList<Node>(); } public Node(int _val) { val = _val; neighb.原创 2021-01-25 14:23:41 · 136 阅读 · 0 评论 -
3. 无重复字符的最长子串
方法一:hashSetclass Solution { public int lengthOfLongestSubstring(String s) { if(s==null||s.length()==0){ return 0; } Set<Character> set=new HashSet<>(); int max=0; int current=0; .原创 2021-01-25 12:58:46 · 91 阅读 · 0 评论 -
560. 和为K的子数组
方法一:暴力破解的方法class Solution { public int subarraySum(int[] nums, int k) { if(nums==null||nums.length==0){ return 0; } int sum=0; int count=0; for(int i=0;i<nums.length;i++){ for(int j=.原创 2021-01-25 10:58:13 · 207 阅读 · 0 评论 -
139.单词拆分
class Solution { public boolean wordBreak(String s, List<String> wordDict) { Set<String> wordDictSet=new HashSet<>(wordDict); //定义一个集合 boolean[] dp=new boolean[s.length()+1]; //定义一个动态规划数组 dp[0]=tr.原创 2021-01-22 20:59:38 · 115 阅读 · 0 评论 -
1143. 最长公共子序列
class Solution { public int longestCommonSubsequence(String text1, String text2) { int m=text1.length(); int n=text2.length(); int[][] dp=new int[m+1][n+1]; for(int i=1;i<=text1.length();i++){ for(int j=.原创 2021-01-22 18:38:52 · 80 阅读 · 0 评论 -
62. 不同路径
方法一:升级版本 动态规划class Solution { public int uniquePaths(int m, int n) { int[][] dp=new int[m][n]; for(int i=0;i<m;i++){ dp[i][0]=1; } for(int j=0;j<n;j++){ dp[0][j]=1; } f.原创 2021-01-21 22:11:27 · 77 阅读 · 0 评论 -
198. 打家劫舍
方法一:动态规划+数组class Solution { public int rob(int[] nums) { if(nums==null||nums.length==0){ return 0; } int[] dp=new int[nums.length+1]; dp[0]=0; dp[1]=nums[0]; for(int i=2;i<=nums.length.原创 2021-01-21 20:51:29 · 120 阅读 · 0 评论 -
509. 斐波那契数
class Solution { public int fib(int n) { int[] arr=new int[n+1]; if(n==0||n==1){ return n; } if(n==2){ return 1; } arr[0]=0; arr[1]=1; arr[2]=1; for(int i=.原创 2021-01-21 17:42:36 · 104 阅读 · 0 评论 -
70.爬楼梯
本题目一共有三种思路方法一:递归方法二:迭代class Solution { public int climbStairs(int n) { int[] arr=new int[n+1]; if(n==1||n==2){ return n; } arr[1]=1; arr[2]=2; for(int i=3;i<=n;i++){ arr[i].原创 2021-01-21 17:20:21 · 81 阅读 · 0 评论 -
12. 整数转罗马数字
class Solution { public String intToRoman(int num) { String[] I={"","I","II","III","IV","V","VI","VII","VIII","IX"}; String[] X={"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"}; String[] C={"","C","CC","CCC","CD","D","DC","D.原创 2021-01-21 16:08:43 · 91 阅读 · 0 评论 -
151.反转字符串里的单词
class Solution { public String reverseWords(String s) { if(s==null){ return null; } StringBuilder sb=new StringBuilder(); String[] ss=s.split(" "); for(int i=ss.length-1;i>=0;i--){ if(.原创 2021-01-21 15:36:10 · 84 阅读 · 0 评论 -
557. 反转字符串中的单词 III
class Solution { public String reverseWords(String s) { if(s==null){ return s; } StringBuilder sb=new StringBuilder(); String[] ss=s.split(" "); for(int i=0;i<ss.length;i++){ if(ss[i].原创 2021-01-21 15:31:37 · 89 阅读 · 0 评论 -
215.数组中的第K个最大元素
使用最大堆class Solution { public int findKthLargest(int[] nums, int k) { if(nums.length==0||nums==null||k>nums.length){ return 0; } PriorityQueue<Integer> queue=new PriorityQueue<>((n1,n2)->(n2-n1)).原创 2021-01-21 11:31:26 · 90 阅读 · 0 评论 -
剑指 Offer 41. 数据流中的中位数
class MedianFinder { /** initialize your data structure here. */ PriorityQueue<Integer> maxHeap; //大顶堆 PriorityQueue<Integer> minHeap; //小顶堆 public MedianFinder() { maxHeap=new PriorityQueue<>((n1,n2)->(n2-n1.原创 2021-01-21 10:51:06 · 117 阅读 · 0 评论 -
236. 二叉树的最近公共祖先
思考边界条件/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode lowestCommonAncestor(TreeNode root, .原创 2021-01-20 21:06:07 · 73 阅读 · 0 评论 -
110.平衡二叉树
递归的方式/** * 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, TreeNode righ.原创 2021-01-20 18:34:52 · 78 阅读 · 0 评论 -
199.二叉树的右视图
做题思路:层序遍历/** * 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, TreeNode .原创 2021-01-20 17:22:49 · 87 阅读 · 0 评论 -
二叉树,前序,中序,后序遍历——非递归形式 模板总结
/** * 统一一下 * @param root * @return */ //前序 public static List<Integer> preOrder(TreeNode root){ List<Integer> list = new ArrayList(); Stack<TreeNode> stack = new Stack(); TreeNode cu.原创 2021-01-19 23:15:37 · 110 阅读 · 0 评论 -
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, TreeNode left, TreeNode .原创 2021-01-19 23:14:10 · 74 阅读 · 0 评论 -
94.二叉树的中序遍历
方法一:递归class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> arraylist=new ArrayList<Integer>(); if(root==null){ return arraylist; } List<Integer> le.原创 2021-01-19 21:50:42 · 86 阅读 · 0 评论 -
144. 二叉树前序遍历
方法一:递归方式class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result=new ArrayList<Integer>(); if(root==null){ return result; } List<Integer> left=.原创 2021-01-19 20:39:46 · 76 阅读 · 0 评论 -
42. 接雨水
方法一:顺序遍历class Solution { public int trap(int[] height) { if(height==null||height.length<3){ return 0; } int count=0; for(int i=1;i<height.length-1;i++){ int maxLeft=0; .原创 2021-01-19 14:03:46 · 91 阅读 · 0 评论 -
611. 有效三角形的个数
方法一:暴力破解的方式class Solution { public int triangleNumber(int[] nums) { if(nums.length==0||nums.length<3){ return 0; } int count=0; Arrays.sort(nums); for(int i=0;i<nums.length-2;i++){ .原创 2021-01-19 11:27:33 · 83 阅读 · 1 评论 -
15.三数之和
方法一:暴力破解的方式class Solution { public List<List<Integer>> threeSum(int[] nums) { Set<List<Integer>> result=new HashSet<>(); if(nums.length==0||nums==null){ return new ArrayList<List<Integer.原创 2021-01-19 09:40:39 · 119 阅读 · 0 评论 -
两数之和 II - 输入有序数组
//双指针class Solution { public int[] twoSum(int[] numbers, int target) { int[] arr=new int[2]; //权限校验 if(numbers==null||numbers.length==0){ return arr; } int start=0; int end=numbers.length-1.原创 2021-01-19 08:42:23 · 77 阅读 · 0 评论 -
寻找旋转排序数组中的最小值 (重复与非重复代码)
class Solution { public int findMin(int[] nums) { if(nums==null||nums.length==0){ return -1; } int start=0; int end=nums.length-1; while(start<end){ int mid=start+(end-start)/2; .原创 2021-01-18 21:16:17 · 117 阅读 · 0 评论 -
154. 寻找旋转排序数组中的最小值 II
class Solution { public int findMin(int[] nums) { if(nums==null||nums.length==0){ return -1; } int start=0; int end=nums.length-1; while(start<=end){ int mid=start+(end-start)/2; .原创 2021-01-18 19:29:00 · 80 阅读 · 0 评论 -
81. 搜索旋转排序数组 II
class Solution { public boolean search(int[] nums, int target) { if(nums.length==0||nums==null){ return false; } int start=0; int end=nums.length-1; while(start<=end){ int mid=start+(.原创 2021-01-18 16:30:23 · 68 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
class Solution { public int findMin(int[] nums) { if(nums==null||nums.length==0){ return -1; } int start=0; int end=nums.length-1; while(start<=end){ int mid=start+(end-start)/2; .原创 2021-01-18 16:00:46 · 85 阅读 · 0 评论 -
33. 搜索旋转排序数组
二分法的思想来做这道题目class Solution { public int search(int[] nums, int target) { if(nums==null||nums.length==0){ return -1; } int start=0; int end=nums.length-1; while(start<=end){ int .原创 2021-01-18 15:41:07 · 71 阅读 · 0 评论 -
推荐结果打散 (快手面试题目) 用两个队列
public List<String> getRecommendenResult(List<String> picAndVideo,int maxInterval){ List<String> result=new ArrayList<>(); if(picAndVideo==null || picAndVideo.size()==0){ return result; } Queue<String>.原创 2021-01-18 12:24:33 · 371 阅读 · 0 评论 -
用栈实现队列
class MyQueue { Stack<Integer> stack1; Stack<Integer> stack2; /** Initialize your data structure here. */ public MyQueue() { stack1=new Stack<>(); stack2=new Stack<>(); } /** Push elem.原创 2021-01-18 11:35:52 · 83 阅读 · 0 评论 -
字节跳动 区间最大值 牛客网
核心的思想是:栈+前缀和public int getMax(int[] numbers){ if(numbers.length==0||numbers==nul){ return 0; } Stack<Integer> stack=new Stack<>(); int max=0; //求前缀和的数组 int[] sum=new int[numbers.length+1]; for(int i=1;i&.原创 2021-01-18 10:13:18 · 222 阅读 · 1 评论 -
最小栈 Min_Stack
最小栈,一定要读懂题目class MinStack { /** initialize your data structure here. */ Stack<Integer> stack; Stack<Integer> minStack; public MinStack() { stack=new Stack(); minStack=new Stack(); } public void pu.原创 2021-01-17 20:44:54 · 312 阅读 · 0 评论