- 博客(9)
- 收藏
- 关注
原创 LeetCode解法java:9. Palindrome Number
思路:查询是否是回文数其实就是很简单的反转该数,然后对比两个数是否相等,非常简单的题。public boolean isPalindrome(int x) { if (x < 0) return false; int result = 0, source = x; while (x != 0) { result *= 10; resul...
2018-03-21 15:28:56 318
原创 LeetCode解法java:8. String to Integer (atoi)
思路:题目没有什么难的,就是把string转换成integer。需要注意的是有些坑,首先要去头尾的空格,其次+-号只能有一个,如果中间出现不是数字的情况,直接截断数字。String的值如果比integer的极限还大(小)的时候,返回极值就可以,所以推荐用long去接收这个数字,然后再判断边界。其实用integer接收数字也行,只要除以10,然后再判断尾数就可以,但是性能上的差距可以忽略不计,所以此...
2018-03-21 15:26:05 280
原创 LeetCode解法java:7. Reverse Integer
思路:反转Integer,非常简单的一道题,只需要用一个result不断接收参数的每一位,然后对result做乘10操作,对参数做除10操作就行。其中就一个坑,接收的参数反转过来之后有可能大于或者小于Integer的边界值2^31。所以用long进行接收,如果判断大于边界值,则返回0。public int reverse(int x) { long result = 0; whil...
2018-03-20 16:01:48 241
原创 LeetCode解法java:5. Longest Palindromic Substring
思路:对整个string的每一个字母都做一个查询最长回文数操作,回文数分奇偶,首先进行奇数回文数查询,如果该字母和下一个字母相同,则也进行偶数回文数查询,然后用end-start记录最长length,返回即可。最简单的解法,应该还有优化空间。public String longestPalindrome(String s) { int start = 0, end = 0; cha...
2018-03-20 15:35:54 249
原创 LeetCode解法java:4. Median of Two Sorted Arrays
思路:这个题需要求中位数,有两个思路:1.直接将两个数组放到一个数组里排序2.因为两个数组是有序数组,所以用归并排序的思路对数组进行处理,也可以达到给数组排序的效果,但是时间复杂度能达到O(log (m+n))思路1:的代码,直接调用java本身给出的api,将两个数组放到一个长度为两个数组之和的数组里,然后将数组排序,取中间的一个或两个数的平均数,返回就可以了,时间复杂度O(nlogn)。pub...
2018-03-20 14:19:13 182
原创 LeetCode解法java:3. Longest Substring Without Repeating Characters
思路:最开始是想两层循环,其中第一层循环维护一个map去搞定这个事情,后来发现有更优的解法,直接分析更优的解法。首先这是一个字母字符串,可以理解为ISO-8859-1编码的字符串,只有256位,所以完全没有必要用character的map,维护一个256位的int数组就可以一一对应上每个字母。这个思路需要维护字符串的起始位和结束位两个角标位置,分别为left和right,每次循环到一个字母时,就给...
2018-03-19 17:27:47 325
原创 LeetCode解法java:2.Add Two Numbers
这题有两种解法思路,1.递归,2.循环。1.递归最开始是想添加一个新方法专门做递归,后来考虑直接用第一个参数l1作为result。首先考虑l1或者l2为空的情况,直接return另一个链表就行。在两个链表都为不为空的时候将l1和l2的数字加起来赋值给l1,然后处理一下超过10的情况,之后将l1.next和l2.next进行递归就行。在提交的时候发现有一种可能就是在l2为null的时候,l1刚好因为...
2018-03-19 17:11:03 191
原创 LeetCode解法java:1. Two Sum
解法思路:维护一个map,key为数组中的数字,value为此数在数组中的位置。在循环的时候,做一个判断,如果当前数字存在与map中的某个数字的和符合题目要求(即为0),直接return这两个数字的位置,否则将这个数添加进map中。public int[] twoSum(int[] nums, int target) { int capacity = 1; while (nums....
2018-03-19 17:01:12 187
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人