
LeetCode
大象大象你的鼻子怎么那么长
学海无涯乐作舟,直挂云帆济沧海
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode——每日一题:分割回文串(dfs+动态规划)
分割回文串(中等)题目来源:力扣解题思路分析:回文串的确定,使用双指针从两端判断两个字符是否相等模拟切割使用回溯,也就是采用dfs做法一:双指针+dfsclass Solution { List<List<String>> resultList = new ArrayList<>(); List<String> tempList = new ArrayList<>(); int len; public原创 2021-03-07 10:26:54 · 224 阅读 · 0 评论 -
LeetCode——每日一题:缀点成线(数学)
缀点成线(简单)题目来源:力扣解题两点确定一条直线,kx+b=y同时排除平行x轴y轴的情况class Solution { public boolean checkStraightLine(int[][] coordinates) { int x_size=coordinates.length; double k=0,b=0; boolean isRow=true; // 计算k值和b值 // 如果横坐标原创 2021-01-17 10:48:41 · 189 阅读 · 1 评论 -
LeetCode—每日一题:交换字符串中的元素(并查集)
交换字符串中的元素(中等)题目来源:力扣解题使用并查集,参考自题解在原题解上加了注释,删除了size的hashmapclass Solution { public String smallestStringWithSwaps(String s, List<List<Integer>> pairs) { if(pairs.size() == 0){ return s; } UnionFind原创 2021-01-12 23:28:48 · 159 阅读 · 1 评论 -
LeetCode——每日一题:汇总区间(双指针)
汇总区间(简单)题目来源:力扣解题暴力循环class Solution { public List<String> summaryRanges(int[] nums) { List<String> result=new ArrayList<>(); //处理异常情况 if(nums==null) return null; else if(nums.length=原创 2021-01-11 23:45:14 · 225 阅读 · 0 评论 -
LeetCode—每日一题:在排序数组中查找元素的第一个和最后一个位置(二分法)
在排序数组中查找元素的第一个和最后一个位置(中等)2020年12月1日题目来源:力扣解题使用二分法找到目标值所在索引,两个while循环分别往前往后推出第一个不是目标值的索引class Solution { public int[] searchRange(int[] nums, int target) { if(nums.length==0) return new int[]{-1,-1}; int left=0; int right=n原创 2020-12-01 21:44:11 · 230 阅读 · 2 评论 -
LeetCode—每日一题:根据数字二进制下1的数目排序(暴力+巧妙)
根据数字二进制下1的数目排序(简单)2020年11月6日题目来源:力扣解题暴力通过重写Collections.sort方法进行条件排序,关键是进行1数目的计算,这里我使用了按位计算,效果差。class Solution { public int[] sortByBits(int[] arr) { List<Integer> list=new ArrayList<>(); for(int i:arr)原创 2020-11-06 11:23:30 · 134 阅读 · 0 评论 -
LeetCode—每日一题:单词接龙(BFS)
单词接龙2020年11月5日题目来源:力扣解题一开始使用DFS进行深度遍历,发现进进出出的太花时间,且做出来之后超时了。改用BFS进行遍历,逐层进行搜索,这里是一个图的结构了,且是双向图思路来自这class Solution { public int ladderLength(String beginWord, String endWord, List<String> wordList) { //广度遍历 //先把列表转成集合原创 2020-11-05 15:36:16 · 230 阅读 · 2 评论 -
LeetCode—每日一题:求根到叶子节点数字之和(递归)
求根到叶子节点数字之和(中等)2020年10月29日题目来源:力扣解题通过递归,记录获得根到当前节点的取值,当某个节点的左右子节点为空则代表为叶子节点,那么加入到结果值中。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x;原创 2020-10-29 13:40:48 · 197 阅读 · 1 评论 -
LeetCode—每日一题:独一无二的出现次数(map+set)
独一无二的出现次数(简单)2020年10月28日题目来源:力扣解题自然的,会想统计数组中每个数字出现的次数,这里我使用了HashMap,HashMap中的getOrDefault方法真香。拿出数字出现次数后,可以用一个HashSet来存,如果没有重复的,那么set和map的大小相同,如果重复,那么set会比map小。class Solution { public boolean uniqueOccurrences(int[] arr) { //计算每个数的出现次数原创 2020-10-28 11:42:11 · 179 阅读 · 0 评论 -
LeetCode—每日一题:数组中的最长山脉(遍历)
数组中的最长山脉(中等)2020年10月25日题目来源:力扣解题找到最近的第一个左山脚,上山下山后找到右山脚,不断更新最长山脉值class Solution { public int longestMountain(int[] A) { int len=A.length; int res=0; int left=0; while(left+2<len){ //右山脚初始化原创 2020-10-25 22:36:36 · 143 阅读 · 0 评论 -
LeetCode—每日一题:视频拼接(动态规划)
视频拼接(中等)题目来源:力扣2020年10月24日解题class Solution { public int videoStitching(int[][] clips, int T) { //开辟一个跟T一样大的dp数组 int[] dp=new int[T+1]; //填充dp数组 Arrays.fill(dp,Integer.MAX_VALUE-1); dp[0]=0; //从i等于1开原创 2020-10-24 17:25:47 · 935 阅读 · 1 评论 -
LeetCode—面试题:栈排序(辅助栈)
栈排序(中等)2020年10月14日题目来源:力扣解题辅助栈来存放主栈比push的值大的元素class SortedStack { private Stack<Integer> st1; private Stack<Integer> st2; public SortedStack() { st1=new Stack<>(); st2=new Stack<>(); }原创 2020-10-15 00:04:12 · 209 阅读 · 0 评论 -
LeetCode—面试题:三合一(数组)
三合一(简单)2020年10月14日题目来源:力扣解题题目意思是这样的,用一个数组来存放三个栈的内容,以stackNum来代表是哪个栈,stackSize就是每个栈的大小,这也决定了我们这个数组的大小为stackSize*3class TripleInOne { private int[] arr; //装栈数据的数组 private int stackSize; //栈的容量 private int[] stackTop; //三个栈的栈顶指针 pu原创 2020-10-14 15:57:16 · 416 阅读 · 1 评论 -
LeetCode—面试题:环路检测(快慢指针)
环路检测(中等)2020年10月14日题目来源:力扣解题链表判断有环容易想到用快慢指针,但这道题需要判断环的入口首先用快慢指针判断是否有环,如果有环,那么把慢指针指向头节点,与快指针同时移动,找第一个相同的节点,那就是环入口节点数学推导如下:来自题解/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x)原创 2020-10-14 15:53:00 · 225 阅读 · 1 评论 -
LeetCode—面试题:回文链表(反转链表+比较)
回文链表(简单)2020年10月8日题目来源:力扣解题如果是回文,那么前半部分链表反转后的链表应该与后半部分的链表完全一致反转链表+比较反转链表方法可看这里,首先算出链表长度,然后取一半进行反转,反转后需要判断长度的奇偶,奇数则省略中间一个数,偶数照常计算,前后两链表遍历对比,不同则返回false/** * Definition for singly-linked list. * public class ListNode { * int val; * ListN原创 2020-10-08 23:38:02 · 381 阅读 · 0 评论 -
LeetCode—面试题:分割链表(头插法)
分割链表(中等)2020年10月1日题目来源:力扣解题头插法遍历找到比x小的节点,然后用后面的节点覆盖此节点,把该节点插到最前面/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public Lis原创 2020-10-01 10:44:47 · 287 阅读 · 0 评论 -
LeetCode—面试题:移除重复节点(哈希集合)
移除重复节点(简单)2020年9月29日题目来源:力扣解题哈希集合记录非重复节点/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode removeDuplicateNod原创 2020-09-29 09:24:48 · 264 阅读 · 0 评论 -
LeetCode—面试题:字符串轮转(暴力+拼接)
字符串轮转(简单)2020年9月26日题目来源:力扣解题暴力模拟轮转,对了就返回true,速度太慢了class Solution { public boolean isFlipedString(String s1, String s2) { if(s1.length()!=s2.length()) return false; if(s1.length()==0 && s2.length()==0) return true;原创 2020-09-26 11:24:03 · 187 阅读 · 0 评论 -
LeetCode—面试题:零矩阵(暴力)
零矩阵(中等)2020年9月26日题目来源:力扣解题用布尔数组记录一开始的0,遍历的更改0值class Solution { public void setZeroes(int[][] matrix) { int x=matrix.length; int y=matrix[0].length; boolean[][] flag=new boolean[x][y]; for(int i=0;i<x;i++){原创 2020-09-26 10:53:49 · 128 阅读 · 0 评论 -
LeetCode—面试题:旋转矩阵(暴力)
旋转矩阵(中等)2020年9月25日题目来源:力扣解题使用另外的数组违背题目意思class Solution { public void rotate(int[][] matrix) { //使用额外内存空间 int x=matrix.length; int y=matrix[0].length; int[][] result=new int[x][y]; for(int i=0;i<x;i++)原创 2020-09-25 10:47:27 · 192 阅读 · 0 评论 -
LeetCode—面试题:一次编辑(暴力)
一次编辑(中等)2020年9月25日题目来源:力扣解题直接分三种情况进行讨论class Solution { public boolean oneEditAway(String first, String second) { if(Math.abs(first.length()-second.length())>1) return false; if(first.length()>second.length()){ if原创 2020-09-25 10:21:45 · 196 阅读 · 0 评论 -
LeetCode—面试题:回文排列(哈希集合)
回文排列(简单)2020年9月23日题目来源:力扣解题哈希集合出现重复元素就消除set中的元素,最后查看set大小是否小于2就可以。若为0,说明字符成对出现,是偶数,若为1,说明是奇数,有个落单的字符在中间。class Solution { public boolean canPermutePalindrome(String s) { Set<Character> set=new HashSet<>(); char[] ch=原创 2020-09-23 10:02:37 · 159 阅读 · 0 评论 -
LeetCode—面试题:URL化(暴力)
URL化(简单)2020年9月23日题目来源:力扣解题暴力遍历字符数组,每次判断是不是空格,用StringBuilder接收最后转成新字符串class Solution { public String replaceSpaces(String S, int length) { char[] ch=S.toCharArray(); StringBuilder sb=new StringBuilder(); for(int i=0;i&原创 2020-09-23 09:43:14 · 218 阅读 · 0 评论 -
LeetCode—面试题:判断是否互为字符重排(位运算)
判断是否互为字符重排(简单)2020年9月22日题目来源:力扣解题单纯使用异或可能会出现像“aa”和“bb”这样的字符串,异或结果为0。考虑加上ascall值计数,使得结果一定唯一。class Solution { public boolean CheckPermutation(String s1, String s2) { int res1=0,res2=0,count1=0,count2=0; char[] ch1 = s1.toCharArray(原创 2020-09-22 09:29:58 · 231 阅读 · 0 评论 -
LeetCode—面试题:判定字符是否唯一(哈希集合+排序)
判定字符是否唯一(简单)2020年9月22日题目来源:力扣解题哈希集合当有重复值出现时,即为falseclass Solution { public boolean isUnique(String astr) { Set<Character> set=new HashSet<>(); char[] ch=astr.toCharArray(); for(int i=0;i<astr.length();i++原创 2020-09-22 09:13:05 · 173 阅读 · 0 评论 -
LeetCode—剑指Offer:二叉树的最近公共祖先Ⅱ
二叉树的最近公共祖先Ⅱ(简单)2020年9月18日题目来源:力扣解题/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public TreeNode lowes原创 2020-09-18 09:08:46 · 111 阅读 · 0 评论 -
LeetCode—剑指Offer:扑克牌中的顺子(暴力+规律)
扑克牌中的顺子(简单)2020年9月14日题目来源:力扣解题暴力if-else语句可破class Solution { public boolean isStraight(int[] nums) { int king=0; Arrays.sort(nums); if(nums[0]==0) king++; for(int i=1;i<5;i++){ if(nums[i]==0) king+原创 2020-09-14 10:09:31 · 171 阅读 · 0 评论 -
LeetCode—剑指Offer:n个骰子的点数(动态规划)
n个骰子的点数(简单)2020年9月13日题目来源:力扣解题参考自题解class Solution { public double[] twoSum(int n) { //初始化原数组,用来存放上个骰子概率数组 double[] pre={1/6d,1/6d,1/6d,1/6d,1/6d,1/6d}; for(int i=2;i<=n;i++){ //存放当前骰子概率数组,5*i+1由骰子点数[n,6n],确定原创 2020-09-13 10:07:22 · 1843 阅读 · 0 评论 -
LeetCode—剑指Offer:队列的最大值(辅助队列)
队列的最大值(中等)2020年9月12日题目来源:力扣解题辅助队列class MaxQueue { Queue<Integer> queue; LinkedList<Integer> max; public MaxQueue() { queue = new LinkedList<>(); max = new LinkedList<>(); } public int原创 2020-09-12 10:51:22 · 199 阅读 · 0 评论 -
LeetCode—剑指Offer:滑动窗口的最大值(暴力)
滑动窗口的最大值(简单)2020年9月11日题目来源:力扣解题class Solution { public int[] maxSlidingWindow(int[] nums, int k) { if(nums.length==0||k==0) return new int[0]; int l=0,r=k-1,j=0; int[] res=new int[nums.length-k+1]; while(r<nums.l原创 2020-09-11 09:54:50 · 102 阅读 · 0 评论 -
LeetCode—剑指Offer:左旋转字符串(暴力)
左旋转字符串(简单)2020年9月11日题目来源:力扣解题class Solution { public String reverseLeftWords(String s, int n) { String a=s.substring(0,n); String b=s.substring(n,s.length()); return b+a; }}如果不能用切片函数class Solution { public Stri原创 2020-09-11 08:53:12 · 107 阅读 · 0 评论 -
LeetCode—剑指Offer:翻转单词顺序(暴力)
翻转单词顺序(简单)2020年9月11日题目来源:力扣解题class Solution { public String reverseWords(String s) { String[] str=s.trim().split(" "); StringBuilder sb=new StringBuilder(); for(int i=str.length-1;i>=0;i--){ if(str[i].equals(原创 2020-09-11 08:43:42 · 150 阅读 · 0 评论 -
LeetCode—剑指Offer:和为s的连续正数序列(滑动窗口)
和为s的连续正数序列(简单)2020年9月10日题目来源:力扣解题class Solution { public int[][] findContinuousSequence(int target) { List<int[]> res=new ArrayList<>(); int l=1,r=1,sum=0; while(l<=target/2){ //如果窗口和小于目标和,窗口右边界往右原创 2020-09-10 11:02:44 · 120 阅读 · 0 评论 -
LeetCode—剑指Offer:和为s的两个数字(双指针法)
和为s的两个数字(简单)2020年9月10日题目来源:力扣解题一头一尾两指针,往中间靠class Solution { public int[] twoSum(int[] nums, int target) { int l=0,r=nums.length-1; while(l<r){ int he=nums[l]+nums[r]; if(he==target) return new int[]{nums原创 2020-09-10 09:49:29 · 150 阅读 · 0 评论 -
LeetCode—剑指Offer:数组中数字出现的次数Ⅱ
数组中数字出现的次数(中等)2020年9月10日题目来源:力扣解题每个数字都会出现3次的话,那么转成二进制相加,肯定会是3的倍数,对3求余的话,那个只出现一次的数字就会出现了。class Solution { public int singleNumber(int[] nums) { int[] tmp=new int[32]; for(int num:nums){ for(int i=0;i<32;i++){原创 2020-09-10 09:14:31 · 145 阅读 · 0 评论 -
LeetCode—剑指Offer:数组中数字出现的次数(暴力+位运算)
数组中数字出现的次数(中等)2020年9月9日题目来源:力扣解题暴力双指针暴力解class Solution { public int[] singleNumbers(int[] nums) { int[] res=new int[2]; int idx=0; for(int i=0;i<nums.length;i++){ if(nums[i]==-1) continue; for原创 2020-09-09 20:35:07 · 166 阅读 · 0 评论 -
LeetCode—剑指Offer:二叉树的深度(后序遍历)
二叉树的深度(简单)2020年9月9日题目来源:力扣解题每进一层就加一详细写法/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { private int原创 2020-09-09 09:40:47 · 117 阅读 · 0 评论 -
LeetCode—剑指Offer:二叉搜索树的第k大节点(中序遍历)
二叉搜索树的第k大节点(简单)2020年9月9日题目来源:力扣解题暴力中序遍历,用ArrayList记录,最后输出倒数第i个节点大小/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class原创 2020-09-09 09:31:19 · 107 阅读 · 0 评论 -
LeetCode—剑指Offer:0~n-1中缺失的数字(双指针法+二分法)
0~n-1中缺失的数字(简单)2020年9月9日题目来源:力扣解题双指针法利用两端和永远等于数组长度的特点,头尾双指针往中间靠拢class Solution { public int missingNumber(int[] nums) { int len=nums.length; int l=0,r=nums.length-1; while(l<=r){ if(nums[l]+nums[r]==len){原创 2020-09-09 09:10:02 · 208 阅读 · 0 评论 -
LeetCode—剑指Offer:在排序数组中查找数字Ⅰ(二分法)
在排序数组中查找数字Ⅰ2020年9月9日题目来源:力扣解题二分法查找这个数的起始位置和终点位置,相减可得结果class Solution { public int search(int[] nums, int target) { return find(nums,target)-find(nums,target-1); } private int find(int[] nums,int target){ int l=0,r=nums.len原创 2020-09-09 08:40:33 · 143 阅读 · 0 评论