LeetCode
susuxuezhang
刚入门的一只小白
展开
-
搜索与图论
import java.util.Scanner;public class Main { static int n; static int[] path; static boolean[] st; public static void main(String[] args) { Scanner sc = new Scanner(System...原创 2020-01-27 00:40:13 · 254 阅读 · 0 评论 -
数据结构3
1.hash表拉链法import java.io.*;public class Main{ static int N = 100010; static int[] h = new int[N]; static int[] e = new int[N]; static int[] ne = new int[N]; static int idx;...原创 2020-01-29 20:55:48 · 142 阅读 · 0 评论 -
数据结构2
1.并查集import java.io.*;public class Main{ static int N = 100010; static int[] p = new int[N]; static int m; static int n; static int find(int x){ if(p[x]!=x) p[x]=find(...原创 2020-01-29 01:10:40 · 143 阅读 · 0 评论 -
数据结构
1.单链表import java.io.*;public class Main { static int N = 100010; static int head; static int idx; static int[] e = new int[N]; static int[] ne = new int[N]; static void ...原创 2020-01-28 01:13:00 · 126 阅读 · 0 评论 -
LeetCode 51 N-Queens 52 N-Queens II
class Solution { char[][] g; boolean[] row,col,dg,udg; List<List<String>> res = new ArrayList<>(); public List<List<String>> solveNQueens(int n) { ...原创 2020-01-26 22:20:51 · 96 阅读 · 0 评论 -
数据结构
1.Two Sumclass Solution { public int[] twoSum(int[] nums, int target) { int[] res = new int[2]; Map<Integer,Integer> map = new HashMap<>(); for(int i=0;i<...原创 2020-01-24 00:34:39 · 180 阅读 · 0 评论 -
滑动窗口、双指针、单调队列和单调栈
167.Two Sum II - Input array is sortedclass Solution { public int[] twoSum(int[] numbers, int target) { int[] res = new int[2]; int i=0,j=numbers.length-1; while(i<j...原创 2020-01-22 00:46:06 · 253 阅读 · 0 评论 -
动态规划
53.Maximum Subarrayclass Solution { public int maxSubArray(int[] nums) { int res=0; int max=Integer.MIN_VALUE; for(int i=0;i<nums.length;i++){ if(res<...原创 2020-01-20 23:39:54 · 132 阅读 · 0 评论 -
字符串
38.Count and Sayclass Solution { public String countAndSay(int n) { StringBuilder s=new StringBuilder("1"); for(int i=0;i<n-1;i++){ StringBuilder sb = new String...原创 2020-01-20 01:38:04 · 160 阅读 · 0 评论 -
Tree
98.Validate Binary Search Treeclass Solution { public boolean isValidBST(TreeNode root) { return dfs(root,Integer.MIN_VALUE,Integer.MAX_VALUE); } public boolean dfs(Tre...原创 2020-01-19 03:16:31 · 128 阅读 · 0 评论 -
链表
19.Remove Nth Node From End of Listclass Solution { public ListNode removeNthFromEnd(ListNode head, int n) { ListNode dummy =new ListNode(-1); dummy.next=head; ListNode...原创 2020-01-18 02:58:31 · 131 阅读 · 0 评论 -
二分
模版一:绿色的target模版二:红色的target69.Sqrt(x)class Solution { public int mySqrt(int x) { int l=0,r=x; while(l<r){ int mid= l+r+1>>1; if(mid<=x/...原创 2020-01-17 19:52:41 · 134 阅读 · 0 评论 -
LeetCode 55 jump game
问题描述: 55 jump game这个是我自己参加的一个datawhale的leetcode每日一题的活动,每天22:00前打卡。最近我在研究动态规划,刚开始看这道跳跃游戏的题目,我打算申请一个dp数组记录每个索引下能够跳跃的最远距离,但是发现这条思路漏掉了一个关键之处,就是每个索引是孤立的。假如当前索引可以跳到末尾,怎么去获取当前索引能否在之前能够可达。后来想了如下这个方法:用...原创 2019-03-31 20:25:17 · 167 阅读 · 0 评论 -
LeetCode 131 Palindrome Partitioning
问题描述:解答:DFSclass Solution { public List<List<String>> partition(String s) { List<List<String>> result = new ArrayList<>(); List<String> l...原创 2019-04-10 13:18:14 · 114 阅读 · 0 评论 -
LeetCode 132 Palindrome Partitioning II
问题描述:解答:class Solution { public int minCut(String s) { int min=s.length(); List<List<String>> res=partition(s); for(int i=0;i<res.size();i++){ ...原创 2019-04-10 13:55:30 · 112 阅读 · 0 评论 -
LeetCode 203 Remove Linked List Elements
问题描述:思路:使用一个指向头节点的指针,这样就能将这个处理过程统一起来。遍历时使用两个指针,一个指向当前节点,一个指向当前节点的前一个节点。如果当前节点的值与val的值不同时,更新两个指针的值;如果当前节点的值和val值相同时,删除当前节点,同时更新这两个指针。实现:...原创 2019-04-05 21:38:56 · 85 阅读 · 0 评论 -
LeetCode 132 Palindrome Partitioning II
问题描述:解答:这个问题可以抽象成一个DP问题,对于一个长度为n的字符串,设DP[i][j]表示第i个字符到第j个字符是否构成回文,若是,则DP[i][j]=1;若否,则DP[i][j]=0;如此,根据回文的约束条件(对称性),DP[i][j]构成回文需满足:1、输入字符串s[i]==s[j],对称性;2、条件1满足并不能保证i到j构成回文,还须:(j-i)&...原创 2019-04-10 14:44:14 · 154 阅读 · 0 评论 -
LeetCode 202 Happy Number
问题描述:解答:这道题定义了一种快乐数,就是说对于某一个正整数,如果对其各个位上的数字分别平方,然后再加起来得到一个新的数字,再进行同样的操作,如果最终结果变成了1,则说明是快乐数,如果一直循环但不是1的话,就不是快乐数,那么现在任意给我们一个正整数,让我们判断这个数是不是快乐数,题目中给的例子19是快乐数,那么我们来看一个不是快乐数的情况,比如数字11有如下的计算过程:1^2 +...原创 2019-04-10 17:52:18 · 118 阅读 · 0 评论 -
LeetCode 92 Reverse Linked List II
问题描述:本人链表水平一直很辣鸡,前几天写了个翻转链表,这次做一个部分翻转链表。基本思路差不多,主要是遍历到m,在翻转的断点处,把节点记录下来,也就是代码里的a,b.最后遍历到n,在断点处分别接起来。...原创 2019-04-06 17:44:00 · 79 阅读 · 0 评论 -
LeetCode 198 HouseRobber;213 HouseRobber II
问题描述:思路:动态规划,申请dp数组记录,dp【0】是nums【0】,dp【1】是nums【0】和nums【1】中的较大值。问题描述:思路:加了个条件,首尾构成环形怎么处理比较好:申请两个dp数组,分为两次动态规划第一次规划,不选nums【0】,所以末尾可以选,可以不选,结果是max(dp1[nums.length-2],dp1[nums.length-1...原创 2019-04-01 20:12:22 · 119 阅读 · 0 评论 -
LeetCode 263 Ugly Number I;264 Ugly Number II;313 Super Ugly Number
问题描述:一开始想到的是暴力求解,count一个个数上去,还理解错了意思,以为整除2或3或5就是了,认为14这种数字也是可以的。后来发现不对,是不能有2,3,5以外的因数,这也不好判断。之后看了一下别人的思路:每个当前丑数都是之前一堆较小丑数的2,3,5倍中的最小值。简称三指针法吧注意那两个不能写成elseif的地方,如果写成elseif,那么丑数数组中会有重复丑数出现...原创 2019-04-01 20:24:21 · 157 阅读 · 0 评论 -
LeetCode 82 Remove Duplicates from Sorted List II
问题描述:解法:原创 2019-04-07 19:16:45 · 168 阅读 · 0 评论 -
LeetCode 83 Remove Duplicates from Sorted List
问题描述:解答:原创 2019-04-07 19:21:00 · 388 阅读 · 0 评论 -
LeetCode 141 Linked List Cycle 142 Linked List Cycle II
问题描述:解答:public class Solution { public boolean hasCycle(ListNode head) { if (head == null || head.next == null) { return false; } ListNode slow=head;...原创 2019-04-07 19:57:16 · 223 阅读 · 0 评论 -
LeetCode 287 Find the Duplicate Number
问题描述:本人垃圾解法:高阶解法:原创 2019-04-07 22:42:51 · 100 阅读 · 0 评论 -
LeetCode 188 Best Time to Buy and Sell Stock IV
问题描述:解答:亲测,K很大的时候,系统提示空间不够。原创 2019-04-08 01:21:01 · 117 阅读 · 0 评论 -
LeetCode 121 122 123 Best Time to Buy and Sell Stock I II III
问题描述:解答:问题描述:解答:问题描述:解答:原创 2019-04-08 01:44:27 · 114 阅读 · 0 评论 -
LeetCode 876 Middle of the Linked List
问题描述:解答:原创 2019-04-08 02:38:39 · 120 阅读 · 0 评论 -
LeetCode 237 Delete Node in a Linked List
问题描述:解答:原创 2019-04-08 02:45:09 · 89 阅读 · 0 评论 -
LeetCode 28 Implement strStr()
问题描述:解答:class Solution { public int strStr(String haystack, String needle) { if (needle.isEmpty()) return 0; if (haystack.isEmpty()) return -1; if (haystack.length() ...原创 2019-04-11 16:35:42 · 115 阅读 · 0 评论 -
LeetCode 1 TwoSum
问题描述:解答:稍微整理一下更清晰:原创 2019-04-08 14:14:50 · 165 阅读 · 0 评论 -
LeetCode 21 Merge Two Sorted Lists
问题描述:解答:原创 2019-04-08 18:08:21 · 146 阅读 · 0 评论 -
LeetCode 15 3Sum
问题描述:思路描述:先fix一个数,然后去找另外两个数,我们只要找到两个数且和为第一个fix数的相反数就行了,既然另外两个数不能使用Two Sum的那种解法来找,如果能更有效的定位呢?我们肯定不希望遍历所有两个数的组合吧,所以如果数组是有序的,那么我们就可以用双指针(头指针和尾指针)以线性时间复杂度来遍历所有满足题意的两个数组合。本人不熟悉这个用法,记录一下。...原创 2019-04-08 22:48:52 · 126 阅读 · 0 评论 -
LeetCode 120 Triangle
问题描述:解答:自底向顶的动态规划原创 2019-04-03 12:49:01 · 103 阅读 · 0 评论 -
LeetCode 206 Reverse Linked List
问题描述:解答:思路应该没问题,记录一下一开始的错误解答:正确表达:原创 2019-04-03 14:31:09 · 109 阅读 · 0 评论 -
LeetCode 5 Longest Palindromic Substring
问题描述:解答:class Solution { public String longestPalindrome(String s) { int len=s.length(); if(len<2){ return s; } int maxLen=0; int star...原创 2019-04-09 16:22:50 · 154 阅读 · 0 评论 -
LeetCode 9 Palindrome Number
问题描述:解答:class Solution { public boolean isPalindrome(int x) { String s=(String.valueOf(x)); int len=s.length(); if(len%2==0) {//偶数 for (int i = 0; i <...原创 2019-04-09 18:19:22 · 163 阅读 · 0 评论 -
LeetCode 125 Valid Palindrome
问题描述:解答:本人有些测试用例过不了的代码,记录下来:class Solution { public boolean isPalindrome(String s) { if(s.length()==0){ return true; } int len=s.length(); s=s....原创 2019-04-09 19:19:30 · 84 阅读 · 0 评论 -
LeetCode 239 Sliding Window Maximum
问题描述:解答:一开始申请了一堆最大值,最大值索引,次大值,次大值索引,次次大值,次次大值索引和当前值比较,来记录遍历时的情况,发现一些特殊情况很难表达,注入k=1,2什么的,而且有漏洞。后来搜索了一下答案,是用队列来记录,想法还是差不多的,不过比我那种要好表达的多。class Solution { public int[] maxSlidingWindow(int[...原创 2019-04-13 14:47:05 · 118 阅读 · 0 评论 -
LeetCode 215 Kth Largest Element in an Array
问题描述:解答:一开始我自己的思路,用一个长度为K的数组记录前K大的数字。class Solution { public int findKthLargest(int[] nums, int k) { int[] temp=new int[k]; Arrays.sort(nums,0,k); for(int i=0;i<k...原创 2019-04-13 16:37:08 · 184 阅读 · 0 评论