随笔分类 -  博客 Leetcode Java实现

摘要:外加一层循环,遍历数组所有数,作为第一个数,其他两个与2sum类似,a+b=target结束循环,如果小就a+,如果大就b- 将满足条件的结果(三个数字)放入midresult中,midresult是个链表,将midresult放入hashmap中去重 再将hashmap中取出来放入result中即可 public class _3Sum { public static Ar... 阅读全文
posted @ 2015-04-07 10:56 keedor 阅读(145) 评论(0) 推荐(0)
摘要:题意 求字典序的下一个 例子1 输入:123 生成:123、132、213、231、312、321 结果:其中132为123的下一个 例子2 输入:321 生成:123、132、213、231、312、321 结果:其中123为321(循环)的下一个 思路 任意排列:a[0],a[1]……a[n] 找到i,满足a[i]=a[i+2]……>=a[n] 从a[i+1]到a[n]中选取... 阅读全文
posted @ 2015-03-30 14:46 keedor 阅读(148) 评论(0) 推荐(0)
摘要:题意:不用乘除取余操作求除法 思路: 1、如果循环一个个把因子从被除数中减去,那么如果是INT_MAX或者INT_MIN除以1的情况,执行时间会很长 2、改善时间效率的方法采用将因子divisor不断乘以2(可以通过移位实现,同时结果ret也从1不断移位加倍),然后和被除数比较,等到大于等于被除数一半时,就从被除数中减去,将因子个数叠加入结果中,然后在剩下的被除数中采用同样的方法减去小于其一... 阅读全文
posted @ 2015-03-30 14:45 keedor 阅读(141) 评论(0) 推荐(0)
摘要:思路1: 这个题目也要从简单的例子入手,然后发现规律。 1 () 2 ()(),(()) 3 ()()(), (())(), (()()), ()(()), ((())) 规律是这样的 ,假设我们已经产生了n-1对括号的所有组合,那么在这个基础上我们可以产生所有的n对括号的组合,我们把一个(放在每个n-1对括号组合的开头,然后在每个每一个括号配好对的位置插入一个)。这... 阅读全文
posted @ 2015-03-30 14:44 keedor 阅读(276) 评论(0) 推荐(0)
摘要:建一个二位char数组对应2,3,4……9的char值,注意2对应abc,9对应wxyz 对于输入的string用charAt取出对应数,注意要减去'0'才是int数,因为是错位对应,从2开始,所以还要减去1,因为数组索引,所以还要减去1 需要用到递归 如果取数字的位置i大于等于电话号码的长度,将sb中的数tostring添加到返回ret中 删掉最后一个字母,换另外一个字母 ... 阅读全文
posted @ 2015-03-25 19:48 keedor 阅读(131) 评论(0) 推荐(0)
摘要:思路 2sum的基础上外加一层循环,用于遍历第1~n-2的n-2个数 首先对num数组进行排序 从第二个数j和最后一个数k开始向中间夹逼 如果遇到两个相等的数向下一个移动 维护一个minus数用于表示sum和target的差值 如果等于0,那么返回target 如果小于0,j++ 如果大于0,k-- 另外维护一个dis=minu... 阅读全文
posted @ 2015-03-25 19:47 keedor 阅读(95) 评论(0) 推荐(0)
摘要:外加一层循环,遍历数组所有数,作为第一个数,其他两个与2sum类似,a+b=target结束循环,如果小就a+,如果大就b- 将满足条件的结果(三个数字)放入midresult中,midresult是个链表,将midresult放入hashmap中去重 再将hashmap中取出来放入result中即可 public class _3Sum { public static Ar... 阅读全文
posted @ 2015-03-25 19:46 keedor 阅读(138) 评论(0) 推荐(0)
摘要:2个字符串的最长公共前缀,其长度肯定不会超过最短的字符串的长度,设最短的字符串长度为n,那么只要比较这2个字符串的前n个字符即可。 如此得出这2个字符串的最长公共前缀prefix后,再拿prefix作为新的字符串和数组中的下一个字符串比较,方法同上。 需要注意的是,如果数组中的某个字符串长度为0,或者求得的当前最长公共前缀的长度为0,就直接返回空字串。 package le... 阅读全文
posted @ 2015-03-25 19:45 keedor 阅读(114) 评论(0) 推荐(0)
摘要:思路 所谓的ZigZag,就是这样的:(P.S:某些浏览器的高速模式可能看不到图,兼容或IE模式应该可以) 因为这是有规律的,可以用数学公式计算出下一个数组下标,这样节省了一定的空间和时间。题目的输出是按行来拼接字符的, 因此我们可以通过逐行计算下标,拼接字符来达到目的。 通过画图观察,我们可以发现, ... 阅读全文
posted @ 2015-03-25 19:44 keedor 阅读(169) 评论(0) 推荐(0)
摘要:题目 求最长的无重复字符的子串 思路1 最长无重复子串肯定包含在两个重复字符之间,用len保存当前最长的子串。如果某两个重复字符之间的子串长于len,则给len赋值这个新的长度。 定义一个标志位数组,大小为128,表示从空格到abcd……xyz到ABC……XYZ,都用ASCII码表示,某一个字符出现,就在对应的位置1,比如出现a,就在数组的第65位置1.ASCII码... 阅读全文
posted @ 2015-03-25 19:43 keedor 阅读(177) 评论(0) 推荐(0)
摘要:题目 Given an array of strings, return all groups of strings that are anagrams. 首先简单介绍一下Anagram(回文构词法)。Anagrams是指由颠倒字母顺序组成的单词,比如"tea"会变成"eat"。 For example: Input:["tea","and","ate","eat"] Ou... 阅读全文
posted @ 2015-03-25 19:42 keedor 阅读(172) 评论(0) 推荐(0)
摘要:解题思路: 首先把字符串a和b补齐到同样长度,前面补零 然后对应位做加法器,设置一个进位位 字符转换成数字需要 -'0' 数字转换为字符需要 +'0' 结果字符数组需要比a和b多一位 最前面的一位为最后的进位位 判断最后的进位如果为1,则设置结果数组第一位为1,创建字符串用result数组全部 如果为0,则设置结果字符数组第一位为0,创建字符串用1... 阅读全文
posted @ 2015-03-25 19:41 keedor 阅读(169) 评论(0) 推荐(0)