leetcode
Belle唯唯
这个作者很懒,什么都没留下…
展开
-
[leetcode] 286 + 542 BFS
都是通过bfs来一层一层找最短路径542class Solution { int[][] dir = new int[][]{{0,1},{0,-1},{1,0},{-1,0}}; public int[][] updateMatrix(int[][] matrix) { Queue<int[]> q = new LinkedList&l...原创 2020-02-19 14:36:41 · 300 阅读 · 0 评论 -
[leetcode] 1192. Critical Connections in a Network
class Solution { private int time = 0; public List<List<Integer>> criticalConnections(int n, List<List<Integer>> connections) { List<List<Integer>> ...原创 2020-01-14 12:53:52 · 384 阅读 · 0 评论 -
[leetcode]384. Shuffle an Array
Proof: Suppose this algorithm works, i.e. for each position j (starting from i), the probability of any number in the range[i,n-1] to be at position j is 1/(n-i).Let’s look at int i = random.nextInt(...原创 2019-12-02 01:43:53 · 217 阅读 · 0 评论 -
[leetcode] 261. Graph Valid Tree
valid tree: = 无向图+无环+只一个连通分量Solution 1 : BFS思路参考:算法1:我们知道对于环 1-2-3-4-1,每个节点的度都是2,基于此我们有如下算法(这是类似于有向图的拓扑排序):求出图中所有顶点的度删除图中所有度 <=1 的顶点以及与该顶点相关的边,把与这些边相关的顶点的度减一如果还有度<=1的顶点重复步骤2最后如果还存在未被删除的顶...原创 2019-11-12 00:31:15 · 313 阅读 · 0 评论 -
[leetcode]875. Koko Eating Bananas
class Solution { public int minEatingSpeed(int[] piles, int H) { int lo = 1; int hi = 1_000_000_000; while (lo + 1 < hi) { int mi = (lo + hi) / 2; ...原创 2019-10-16 01:24:15 · 150 阅读 · 0 评论 -
[leetcode]621. Task Scheduler
https://leetcode.com/problems/task-scheduler/discuss/104500/Java-O(n)-time-O(1)-space-1-pass-no-sorting-solution-with-detailed-explanationclass Solution { public int leastInterval(char[] tasks, i...原创 2019-10-13 04:29:34 · 131 阅读 · 0 评论 -
[leetcode]1.two sum
申请一个没交完,倒是开始刷题了好久没写java 我竟然都不会写了leetcode倒是不用写main哦脑子里第一反应就是这个,暴力解法,我这个弱鸡class Solution { public int[] twoSum(int[] nums, int target) { // int res []=new int[2]; for (int i=0;i&l...原创 2018-11-03 23:00:55 · 117 阅读 · 0 评论 -
[leetcode]2.add two numbers
突然碰到一个medium的题,是真的medium啊,一下子就越界了,先没有用脑子用的int,然后发现long也总是转化成int,遂一怒之下用了biginteger,然后SuccessDetailsRuntime: 173 ms, faster than 0.98% of Java online submissions for Add Two Numbers.我哭了我这个脑子知识点...原创 2018-11-04 14:07:13 · 98 阅读 · 0 评论 -
[leetcode]3. longest substring without repeating characters
知识点:But look up in hash table should be amortized O(1)O(1) time as long as the hash function was chosen carefully.hashmap相交map set hashset,查找速度是最快的滑动窗口 :第一次接触到这个名词是tcp协议那里。就是i,j一头一尾,使j能尽量向右滑动,不满足...原创 2018-11-05 13:47:15 · 80 阅读 · 0 评论 -
[leetcode]5.Longest Palindromic Substring
自己的暴力解法果真超时了,但是很开心有进步,能把自己脑子里的算法给顺利翻译出来了,比刚开始做第一题的感觉好多了,开心。暴力解法:遍历class Solution { public String longestPalindrome(String s) { char []a=s.toCharArray(); int maxCount=0; S...原创 2018-11-10 18:01:18 · 107 阅读 · 0 评论 -
[leetcode]4. median of two sorted arrays
第一个hard题。我第一想法是合并排序,nlogn对于这个题,时间复杂度应该是o(m+n)log(m+n),而不是题目要求的o(Log(m+n))class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int i=0,j=0,k=0; int m=...原创 2018-11-07 22:58:01 · 69 阅读 · 0 评论 -
[leetcode]12. Integer to Roman
啊我这个弱鸡,一到这种没见过的题目就GGclass Solution { public String intToRoman(int num) { int thousands,ones,tens,hundreds; String res=""; thousands=num/1000; one...原创 2018-11-20 16:22:12 · 66 阅读 · 0 评论 -
[leetcode]13. Roman to Integer
有了12题的基础,这一题确实是easy了就是一定要注意不要越界每一次都要判断i是否小于s.length()class Solution { public int romanToInt(String s) { int i=0; int thousands=0; int hundreds=0; int tens=0; ...原创 2018-11-20 17:18:20 · 88 阅读 · 0 评论 -
[leetcode]7. Reverse Integer
还挺简单的。但是题目给了个数为1534236469,结果最后结果跑出来是1056389759。后来想想是溢出的问题。注意防止溢出不能写 (res * 10> Integer.MAX_VALUE)这种,因为res*10已经溢出了,要 res > Integer.MAX_VALUE/10 这样,反着写。不用背2的31次方-1是多少,直接用 Integer.MAX_VALUE和 ...原创 2018-11-16 11:32:08 · 122 阅读 · 0 评论 -
[leetcode]14. Longest Common Prefix
Solution 1:自己的暴力解法还挺简单的,一次就AC了class Solution { public String longestCommonPrefix(String[] strs) { if(strs.length==0||strs==null) return &amp;amp;quot;&amp;amp;quot;; int k=0; ...原创 2018-11-20 23:01:13 · 94 阅读 · 0 评论 -
[leetcode]6.ZigZag Conversion
这题一上来,直接把我看懵逼了。半天才搞懂zigzag是真的就是按z字型的意思Solution 1: 暴力解法把下一次上一次的这种路线当成一个循环体设置f为direction的标志,f=0表示向下,f=1表示斜着向上m是存整个路径的矩阵,首先初始化为0class Solution { public String convert(String s, int numRows) { ...原创 2018-11-15 09:30:30 · 104 阅读 · 0 评论 -
[leetcode]8. String to Integer (atoi)
这一题在思路上还是比较简单。注意边界情况。结合上一个reverse integer来看,要注意处理溢出 for(int m=0;m<j;m++){ if(res>(Integer.MAX_VALUE-(int)k[m]+48)/10&&sign=='*')return 2147483647; if(...原创 2018-11-17 09:28:54 · 82 阅读 · 0 评论 -
[leetcode]15. 3Sum
Solution 1: 用hashmap空间复杂度O(n),两个循环时间复杂度O(n2)Arrays.sort(nums);是什么神仙静态方法,又一次感叹java的封装性class Solution { public List&lt;List&lt;Integer&gt;&gt; threeSum(int[] nums) { Map&lt;Integer,Integer...原创 2018-11-22 11:36:57 · 69 阅读 · 0 评论 -
[leetcode]9. Palindrome Number
Solution 1:简单粗暴的转换成String再转成数组class Solution { public boolean isPalindrome(int x) { if(x<0)return false; char []a=String.valueOf(x).toCharArray(); int i=0; whil...原创 2018-11-17 10:15:21 · 147 阅读 · 0 评论 -
[leetcode]10. Regular Expression Matching
IndexOutOfBoundsException - 如果 beginIndex 为负或大于此 String 对象的长度。这题没想出来,直接看答案了。觉得答案甚是巧妙啊啊啊啊!Solution 1:递归如果pattern为空,且text为空,说明都匹配完成,返回true。如果pattern为空,但是text不为空,说明text没有被匹配完,返回false。 if (patt...原创 2018-11-17 12:43:50 · 167 阅读 · 0 评论 -
[leetcode]16. 3Sum Closest
受上一题的启发,一次AC了,也不需要去重,因为只有唯一的解Solution 1:fix i,pq指针如果3sum小于target,p++,同时判断距离closest是不是变小了如果3sum大于target,q–,同时判断距离closest是不是变小了如果等于直接返回3sumclass Solution { public int threeSumClosest(int[] nums...原创 2018-11-22 22:37:42 · 85 阅读 · 0 评论 -
[leetcode]11. Container With Most Water
这题用暴力像easy就是第二种解法没看见过Solution 1: 暴力解法class Solution { public int maxArea(int[] height) { int max=0; int area=0; for(int i=0;i&lt;height.length;i++){ ...原创 2018-11-17 17:03:57 · 75 阅读 · 0 评论 -
[leetcode]17. Letter Combinations of a Phone Number
激动人心啊,终于能以这种操作ac了第一遍submit忘记处理空,第二遍就ac了Runtime: 2 ms, faster than 91.37% of Java online submissions for Letter Combinations of a Phone Number.Solution 1: Divide and Conquer要记住啊!分治法要分到最小的问题再开始...原创 2018-11-23 11:45:49 · 112 阅读 · 0 评论 -
[leetcode]24. Swap Nodes in Pairs
这题感觉没什么怎么就medium了。临时加上一个空的头结点,方便循环处理。ListNode m=new ListNode(-1); m.next=head; head=m;m是要交换的两个节点的前驱p是要交换的第一个,q是要交换的第二个处理奇数情况,如果p是最后一个节点,则q是null,这样就不用交换 ,直接break跳出循环 if(...原创 2018-11-25 20:56:57 · 82 阅读 · 0 评论 -
[leetcode]22. Generate Parentheses
Solution 1: 递归回溯法回溯就是找到所有的解,一直没用java写过回溯,突然有点懵逼一直往左下走if (open < max) backtrack(ans, cur+"(", open+1, close, max);cur还是左下之前的值,再继续往右下走 if (close < open) backtrack(ans...原创 2018-11-24 17:46:03 · 98 阅读 · 0 评论 -
[leetcode]25. Reverse Nodes in k-Group
这题是真的hard。我卡了好久没有想明白。迭代解法:https://leetcode.com/problems/reverse-nodes-in-k-group/discuss/11440/Non-recursive-Java-solution-and-idea原创 2018-11-25 22:42:54 · 77 阅读 · 0 评论 -
[leetcode]23. Merge k Sorted Lists
Solution 1:结合21题+Divide&Conquer用公式套就是这个T(n)=2T(n/2)+O(n)https://blog.csdn.net/demon24/article/details/8468761直观来想的话,就是答案给的这种/** * Definition for singly-linked list. * public class ListNod...原创 2018-11-24 23:34:01 · 72 阅读 · 0 评论 -
[leetcode]18. 4Sum
这一题和那个3sum是一个思路。其实多少sum都是一样的。有两种方法解,明显第二种比较快。Solution 1: hashmap+三个循环空间复杂度为O(n)时间复杂度为O(n3)class Solution { public List<List<Integer>> fourSum(int[] nums, int target) { Map...原创 2018-11-23 14:03:30 · 89 阅读 · 0 评论 -
[leetcode]31. Next Permutation
class Solution { public void nextPermutation(int[] nums) { boolean status=next(nums,0); } private boolean next(int[] nums,int start){ in...原创 2018-11-28 23:25:38 · 77 阅读 · 0 评论 -
[leetcode]19. Remove Nth Node From End of Liste
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */class Solution { public ListNode removeNthFr...原创 2018-11-23 14:54:51 · 72 阅读 · 0 评论 -
[leetcode]20. Valid Parentheses
这个题果真很easy但是注意“【”这种这有左边的情况class Solution { public boolean isValid(String s) { if(s.length()==0||s==null)return true; Stack<Character> st = new Stack<Character&g...原创 2018-11-23 15:32:29 · 91 阅读 · 0 评论 -
[leetcode]21. Merge Two Sorted Lists
Runtime: 5 ms, faster than 100.00% of Java online submissions for Merge Two Sorted Lists.小周还有这么一天吗!Solution 1:不用开辟新的结点,直接改变原两条链表的指针然后merge。借用l1当做新的头指针,临时用一个头结点t,l1起初指向t。t作为连接用的指针。最后返回时,返回l1.nex...原创 2018-11-23 16:14:10 · 84 阅读 · 0 评论 -
[leetcode]26. Remove Duplicates from Sorted Arrayde
要注意i<nums.length,防止【1,4,4,4】越界class Solution { public int removeDuplicates(int[] nums) { int k=0; for(int i=0;i<nums.length;i++){ ...原创 2018-11-26 11:13:49 · 73 阅读 · 0 评论 -
[leetcode]27. Remove Element
Solution 1:最简单的两个指针和26题很像class Solution { public int removeElement(int[] nums, int val) { int i=0; int k=0; while(i<nums.length){ if(nums[i]!=val){ ...原创 2018-11-26 11:20:58 · 84 阅读 · 0 评论 -
[leetcode]37. Sudoku Solver
回溯法一定要记得恢复原值,因为前后值都有关联有一种牛逼八皇后不用这样 if(solve(board)) return true; //If it's the solution return true else ...原创 2018-12-02 15:43:37 · 103 阅读 · 0 评论 -
[leetcode]32. Longest Valid Parentheses
Solution 1:暴力自己写的暴力,果然tle了class Solution { public int longestValidParentheses(String s) { if(s==null||s.length()==0) return 0; int res=0; for(int i=0;i&...原创 2018-11-30 11:18:20 · 80 阅读 · 0 评论 -
[leetcode]33. Search in Rotated Sorted Array
class Solution { public int search(int[] nums, int target) { if(nums==null||nums.length==0)return -1; if(nums.length==1){ if(target==nums[0])return 0;...原创 2018-11-30 15:26:10 · 89 阅读 · 0 评论 -
[leetcode]29. Divide Two Integers
Solution 1: 转换成long 这题太变态了第一次碰到位运算的题。首先判断符号,>>>是右移运算符。负数的用补码表示,最高位是1,正数最高位是0。boolean isNeg = (dividend^divisor)>>>31 == 1;判断边界条件 if(dividend==Integer.MIN_VALUE&&di...原创 2018-11-27 13:15:35 · 134 阅读 · 0 评论 -
[leetcode]28. Implement strStr()
我写的垃圾暴力,太垃圾了,这个脑子。class Solution { public int strStr(String haystack, String needle) { if(needle==null||needle.length()==0)return 0; if(needle.length()>haystack.length...原创 2018-11-27 17:25:50 · 72 阅读 · 0 评论 -
[leetcode]34. Find First and Last Position of Element in Sorted Array
自己写的,虽然过了,但是其实是有问题的class Solution { public int[] searchRange(int[] nums, int target) { if(nums==null||nums.length==0)return new int[]{-1,-1}; int n=nums.length; i...原创 2018-12-01 12:00:13 · 76 阅读 · 0 评论