leetcode
千念飞羽
这个作者很懒,什么都没留下…
展开
-
日常小结-层序遍历的实现leetcode 297
层序遍历的实现leetcode 297-Serialize and Deserialize Binary Tree最近在写leetcode的测试集,目前想实现一个输入string类型的数组得到对应树的去序列化程序。正好这题跟297其实是一个意思,然后就顺带看了下。看了几个最高赞的答案发现作者其实挺鸡贼的。几个答案都是按DFS方法做的。但是其实这几个方法得到的树结果貌似是错的。只是因为测试集先调用了序原创 2016-06-20 01:42:44 · 998 阅读 · 0 评论 -
leetcode-5. Longest Palindromic Substring
leetcode-5. Longest Palindromic Substring Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.这题总的来看的话有3类比较好的写法吧。不过这里我只实现了两种。DP算法第一类是DP原创 2016-11-16 14:33:31 · 315 阅读 · 0 评论 -
leetcode - 1、15、18、167
1. Two Sum167. Two Sum II - Input array is sorted15. 3Sum18. 4Sum原创 2016-11-13 14:31:39 · 470 阅读 · 0 评论 -
leetcode-445. Add Two Numbers II
#leetcode-445. Add Two Numbers II原创 2016-11-14 14:14:11 · 1723 阅读 · 0 评论 -
leetcode-2-Add Two Numbers
2-Add Two Numbers题目: You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers a原创 2016-11-14 14:09:40 · 409 阅读 · 0 评论 -
leetcode-67. Add Binary
leetcode-67. Add Binary原创 2016-11-14 14:16:39 · 284 阅读 · 0 评论 -
leetcode-43. Multiply Strings
leetcode-43. Multiply Strings实现原理的话图解简单的说就是根据相乘位置的坐标来计算结果。因为这个只是两个数相乘所以每次相乘只会影响两个位。知道这样的原理只要用类似的加法的形式实现就好public class Solution { public String multiply(String num1, String num2) { int[] sum原创 2016-11-14 14:20:23 · 274 阅读 · 0 评论 -
leetcode-38. Count and Say
leetcode-38. Count and Say题目: The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211, 111221, … 1 is read off as “one 1” or 11. 11 is read off as “two原创 2016-11-30 16:15:19 · 283 阅读 · 0 评论 -
leetcode-39. Combination Sum
leetcode-39. Combination Sum题目:这是一道标准的回溯法的题,基本结构都是固定的。helper里面先判断终止条件: - 如果res==0则说明结果已找到,新建一个List对象放到ret结果中, - 如果res小于0则说明目前list中对象不满足条件。 - 如果res大于0: - 需要从当前i开始进行下一个helper的pos的判断。由于不限制取值条件,则下一层迭代的pos原创 2016-11-30 16:23:53 · 256 阅读 · 0 评论 -
leetcode-42. Trapping Rain Water
leetcode-42. Trapping Rain Water题目:基本上就是两点法,i和j分别从两端开始向中心移动。同事维护一个i和j之外最高的容器高度h就行,凡是低于h的i和j的值说明都有水。原创 2016-11-30 16:47:12 · 346 阅读 · 0 评论 -
leetcode-6. ZigZag Conversion
leetcode-6. ZigZag Conversion题目: The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legib原创 2016-11-18 10:56:56 · 288 阅读 · 0 评论 -
leetcode-7. Reverse Integer
leetcode-7. Reverse Integer题目: Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321这类题目本身比较简单,但是有几个解题的点需要注意:原题中也给了提示:首尾的0元素怎么办? 不同类型的题目都有不同的处理,稍加注意就能改善原创 2016-11-18 13:07:44 · 362 阅读 · 0 评论 -
leetocde-8. String to Integer (atoi)
Implement atoi to convert a string to an integer. Requirements for atoi: The function first discards as many whitespace characters as necessary until the first non-whitespace character is found原创 2016-11-18 13:12:11 · 309 阅读 · 0 评论 -
leetcode-9. Palindrome Number
leetcode-9. Palindrome Number Some hints: Could negative integers be palindromes? (ie, -1) If you are thinking of converting the integer to string, note the restriction of using extra space.原创 2016-11-18 13:13:38 · 336 阅读 · 0 评论 -
leetcode-10. Regular Expression Matching
leetcode-10. Regular Expression Matching Implement regular expression matching with support for ‘.’ and ‘*’. ‘.’ Matches any single character. ‘*’ Matches zero or more of the preceding elemen原创 2016-11-18 13:22:40 · 379 阅读 · 0 评论 -
leetcode-11. Container With Most Water
leetcode-11. Container With Most Water题目 Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of li原创 2016-11-18 13:25:12 · 282 阅读 · 0 评论 -
leetcode-40. Combination Sum II
leetcode-40. Combination Sum II题目:相对于上一题,这题要麻烦一些。但是基本上还是常规思路。主要就是两点:- 第一点是每个candidate数组中的取值只能取一个,这样在helper里面进行下一层pos的取值的时候就需要是i+1而不是i。- 第二点就是candidate内部有可能有重复的值,这样就需要排除重复取值的情况,也就是如给出的例子,1,2,5可能重复取两边,所以在进行下原创 2016-11-30 16:28:28 · 280 阅读 · 0 评论 -
leetcode-41. First Missing Positive
leetcode-41. First Missing Positive题目:这题确实一道比较难的题,不过有的人可能看起来比较简单,反正我是看了答案才明白的。基本思路就是把i放到i-1的位置上,如果当前i-1位置上的值不对就不停的交换,直到i-1位置上的值是i就行或者i-1的位置不符合标准。原答案写的麻烦一些。我这里重写了一下原创 2016-11-30 16:32:44 · 302 阅读 · 0 评论 -
leetcode-3. Longest Substring Without Repeating Characters
leetcode-3. Longest Substring Without Repeating Characters比较常规的思路,就是两个指针分别指向首尾,并且用一个hashmap维护两指针之间的出现的字母以及出现的最近一次位置。每次循环加右指针直到遇到重复的字母。然后更新做节点和HashMappublic class Solution { public int lengthOfLonge原创 2016-11-15 14:44:08 · 257 阅读 · 0 评论 -
leetcode-4. Median of Two Sorted Arrays
leetcode-4. Median of Two Sorted Arrays刚拿到这题的时候题目理解错了。主要难点在于要求log(m+n)这点实现起来比较困难一些,类似这样的时间复杂度要求,其实都需要分治或二分之类的方法去做,否则肯定是没办法达到要求的。这里就是借鉴了二分的思路。既然两个输入的数组都是排序的。找中位数,其实就可以泛化为找第(m+n)/2个最小的数。每次比较两个数组的第k/2个。如果原创 2016-11-15 15:27:28 · 327 阅读 · 0 评论 -
leetcode-12. Integer to Roman
leetcode-12. Integer to Roman题目: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999.主要思路就是根据10*,90*,50*,40*,这几个点分段处理就行。没有特别需要注意的。public c原创 2016-11-19 11:42:23 · 307 阅读 · 0 评论 -
leetcode-13. Roman to Integer
leetcode-13. Roman to Integer题目: Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.和12题比较类似。同样是9*,5*,4*,10*这几个点分段处理就行。没什么特别需要注意的public c原创 2016-11-19 11:44:51 · 285 阅读 · 0 评论 -
leetcode-14. Longest Common Prefix
leetcode-14. Longest Common Prefix题目: Write a function to find the longest common prefix string amongst an array of strings.基本思路就是遍历strs的每个String的第i个坐标然后返回0-i之间的String。需要注意的一点就是对于strs可能存在的空字符串的情况。pu原创 2016-11-19 11:47:53 · 295 阅读 · 0 评论 -
leetcode-16. 3Sum Closest
leetcode-16. 3Sum Closest题目: Given an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the sum of the three integers. You may assume that原创 2016-11-19 11:52:57 · 377 阅读 · 0 评论 -
leetcode-44. Wildcard Matching
leetcode-44. Wildcard Matching题目: 这种题首先应该确定是用DP方法做。但是这题比[10题]简单一些。因为这里`*`可以匹配任意长度。所以对于`*`只要判断同一行的上列位置或者同一列的上一行位置是否为真就好。而?只要判原创 2016-12-01 19:25:40 · 262 阅读 · 0 评论 -
leetcode-45. Jump Game II
leetcode-45. Jump Game II题目:从最简单的想法来看,就是维护2个nums.length的数组,一个填当前位置可以到达的最远的距离,一个填当前位置的最小跳数。但是这样的话就需要O(n^2)的复杂度(我觉得好像是。因为虽然搜索范围是nums.length*nums[i]但是实际上nums[]的范围是有限的所以应该是n^2)后来看过答案才明白,应该以每次增长为一个循环层次,然后迭代本次跳跃原创 2016-12-01 19:38:46 · 245 阅读 · 0 评论 -
leetcode-46. Permutations
leetcode-46. Permutations题目:这一题的基本思路就是典型的回溯法。但是问题是怎么去查询下一层迭代。基本的方法就是每次加入不同的pos位置,然后如果List本身包含了这个pos的值则说明已经加入过了。当然这是针对这题的,如果是有重复值的话就比较麻烦了。目前的思路和之前一题有类似的情况,就是先排序然后判断当前pos和pos-1是否一致来跳过相同的加入。这样的思路行不行。不过这个我没写过了。以原创 2016-12-01 19:48:33 · 345 阅读 · 0 评论 -
leetcode-17. Letter Combinations of a Phone Number
leetcode-17. Letter Combinations of a Phone Number题目: Given a digit string, return all possible letter combinations that the number could represent. A mapping of digit to letters (just like on the原创 2016-11-20 13:21:11 · 413 阅读 · 0 评论 -
leetcode-19. Remove Nth Node From End of List
leetcode-19. Remove Nth Node From End of List题目: 这题的要求是一趟算法。这个稍微麻烦点。主要的思路就是类似两点法,先移动end指针n个节点,在同时移动pre和end两个节点。直到end节点到达终点。。 另外还有需要注意的一点是如果移除的是头节点的话,需要做一些特殊的处理。可以利用end节点自身正好是null这一特性可以使得程序更加简洁。原创 2016-11-20 13:24:59 · 315 阅读 · 0 评论 -
leetcode-20. Valid Parentheses
leetcode-20. Valid Parentheses题目: 基本思路就用栈去匹配最近的一个左括号。原创 2016-11-20 19:54:45 · 537 阅读 · 0 评论 -
leetcode-21. Merge Two Sorted Lists
leetcode-21. Merge Two Sorted Lists题目:思路就是先对所有节点前面加一个哑节点。然后根据哑节点的next一个一个转移到最终的节点后。另外需要处理一下最后只有一个队列剩余的情况。原创 2016-11-20 20:01:53 · 324 阅读 · 0 评论 -
leetcode-47. Permutations II
leetcode-47. Permutations II题目: 主要要解决两个问题: 第一个问题是如何排序,总的来说常规的思路,就是建一个list,然后不断的加不同位置的值进去。并且在不同的迭代层次插入和删除元素,完成回溯。这也是java比较好实现的一种典型的回溯法。但是就这题来说其实也可以使用交换数组中固定元素的方式来遍历。但是这里有个无关算法的小trick,就是Arrays.asList(int[])类型原创 2016-12-03 11:09:26 · 316 阅读 · 0 评论 -
leetcode-23. Merge k Sorted Lists
leetcode-23. Merge k Sorted Lists常规思路n*kn*logk的mergesort和堆解法原创 2016-11-21 14:59:00 · 287 阅读 · 0 评论 -
leetcode-24. Swap Nodes in Pairs
leetcode-24. Swap Nodes in Pairs题目:感觉没什么要说的,,都是常规思路,链表加哑节点,然后循环条件判断是否为空,剩下的就是指针互相指了。细心一点就好原创 2016-11-21 15:01:25 · 340 阅读 · 0 评论 -
leetcode-22. Generate Parentheses
leetcode-22. Generate Parentheses题目:基本思路就是剩余左括号和右括号的顺序,只要注意右括号不能比做多就行了,虽然标记是回溯法,但是个人觉得用java来写,更像DFS。。毕竟String是final类。。多练练题还是好的,第一次做这题的时候想了很多,刷第二遍leetcode的时候很快就做出来了。原创 2016-11-21 14:39:13 · 285 阅读 · 0 评论 -
leetcode-25. Reverse Nodes in k-Group
leetcode-25. Reverse Nodes in k-Group题目: 思路基本上一样,只是泛化一下: 首先,链表的题加哑节点基本上是通行的方法了 其次,判断一下是否有足够的节点来进行翻转,如果有则进行k个节点的翻转,如果没有则直接返回。 最后,翻转的时候和两节点的类似,需要建立k大小的数组来储存哑节点之后的k个需要翻转的节点,翻转之后移动哑节点到最后的一个翻转完成的节点的位置,然后迭代。原创 2016-11-22 10:30:24 · 852 阅读 · 0 评论 -
leetcode-26. Remove Duplicates from Sorted Array
leetcode-26. Remove Duplicates from Sorted Array题目: 基本思路就是记录一下当前记录的值,当前的位置和当前位移的距离这三个量然后逐点的变化,直至pos+dis<nums.length。原创 2016-11-22 10:32:54 · 221 阅读 · 0 评论 -
leetcode-27. Remove Element
leetcode-27. Remove Element题目: Given an array and a value, remove all instances of that value in place and return the new length. Do not allocate extra space for another array, you must do this原创 2016-11-22 10:35:20 · 332 阅读 · 0 评论 -
leetcode-48. Rotate Image
leetcode-48. Rotate Image题目: 要求要做原地变换。这里其实需要找规律,如果一个一个移动的话虽然理论上可以,但是实在太复杂了。 - 顺时针旋转: - 先沿着对角线翻转,然后在竖直方向翻转一下就可以了。 - 逆时针旋转: - 先竖直方向翻转,然后在沿着对角线反正一下就可以了。原创 2016-12-04 21:32:53 · 277 阅读 · 0 评论 -
leetcode-49. Group Anagrams
leetcode-49. Group Anagrams题目:这题本身并没有什么特别灵巧的算法。但是这里需要说明一下。java里面hash算法如果自己没有重写hash的话,基本上是根据对象来分的,就算是内容一样不是同一个对象也会有不同的hash值。但是String之类的是除外的,因为String实际上在hashmap里有一套专门的散列方式。因为按照常规的散列方式安全性太低了。原创 2016-12-04 21:42:17 · 263 阅读 · 0 评论