- 博客(221)
- 收藏
- 关注
原创 113 - 删除排序链表中的重复数字 II
2017.11.1果然一遇到链表就剪不清理还乱。一会儿就彻底懵了。大致思路就是先判断有没有重复的,如果有重复的,就全部删除如果没有重复的,就下一个。呵呵,道理我都懂啊,我就是写不出来代码啊/** * Definition for ListNode * public class ListNode { * int val; * ListNode next
2017-11-01 10:18:44
398
原创 612 - K个最近的点
2017.10.30就是先算出每个点到目标点的距离,然后按距离排序。当距离相等的时候,按照x,y的值进行排序。最后,输出前k个就可以了。/** * Definition for a point. * class Point { * int x; * int y; * Point() { x = 0; y = 0; } * Point(in
2017-10-30 15:36:58
499
原创 681 - 缺失的第一个素数
2017.10.30缺失的素数出现的地方,有三种情况1.开头2.中间3.结尾对这三种情况分别进行处理就可以了public class Solution { /* * @param : an array of integer * @return: the first missing prime number */ public int
2017-10-30 10:25:39
688
原创 677 - 大岛的数量
2017.10.30采用深度遍历的方法,找到相连的岛屿并计数,如果最后的计数量大于给定的k,那么res + 1;public class Solution { /* * @param : a 2d boolean array * @param : an integer * @return: the number of Islands */
2017-10-30 09:08:16
519
原创 704 - 点灯切换
2017.10.28set中存放的是,所有的开关情况的组合res中存放的是,根据开关情况,计算出来的灯泡的亮灭的情况的组合。值得注意的是,当m和n过大的时候,只需要关注 n%6个灯 在 m%16次操作之后的情况就可以了。public class Solution { /* * @param : number of lights * @param
2017-10-28 09:50:53
385
原创 419 - 罗马数字转整数
2017.10.27public class Solution { /* * @param s: Roman representation * @return: an integer */ public int romanToInt(String s){ HashMap map = new HashMap<>(); map.put('I', 1)
2017-10-27 15:46:46
387
原创 518 - 超级丑数
2017.10.27被整数越界的问题困扰了好久,以后一定要记得这种很大的数相乘会出现越界的情况。public class Solution { /** * @param n a positive integer * @param primes the given prime list * @return the nth super ugly numbe
2017-10-27 15:06:51
337
原创 688 - 单词表示数字
2017.10.26三位三位的读,然后再加thousand million billion等单位。再读每一个三位的时候,后两位需要特殊处理。此外就是空格的增加需要格外注意一些,这主要是针对几个相连的0出现的情况。public class Solution { /* * @param : the number * @return: the number i
2017-10-26 17:50:28
1320
原创 698 - 数组中最大的差值
2017.10.24刚开始没有看清楚a,b需要是不同数组中的内容。这样就需要保存最大值,最小值,次大值,次小值,以及他们出现在数组中的位置。来判断是不是出自同一个数组。public class Solution { /* * @param : an array of arrays * @return: return the max distance amon
2017-10-24 18:11:48
339
原创 700 - 杆子分割
2017.10.24状态转移方程为: value[i] = Math.max(value[i], value[j] + value[i-j]);public class Solution { /* * @param : the prices * @param : the length of rod * @return: the max value
2017-10-24 17:46:51
634
原创 719 - 计算最大值
2017.10.24当遍历到s的第i个字符时 d[i] = max(i*d[i-1], i+ d[i-1])public class Solution { /* * @param : the given string * @return: the maximum value */ public int calcMaxValue(String str
2017-10-24 17:29:18
402
原创 718 - 重复字串
2017.10.24重复字符串A,当A的长度大于B的长度的2倍的时候,停止。在此期间,一直检查B是不是A的子串,如果是,就提前停止。返回重复次数。这个时候,如果B仍旧不是A的子串,那么就返回-1;public class Solution { /* * @param : string A to be repeated * @param : strin
2017-10-24 15:36:43
318
原创 706 - 二进制时间
2017.10.24 /**小时数中,最多可以包含3个1;小时数最多为4位, * 分钟数中,最多可以包含5个1;分钟数最多有6位; * 所以num的数量不可以大于8 */建立map,分别计算1~60的二进制表示中,有几个1;然后根据num对小时和分钟中1的含量进行划分, 最后再组合就可以public class So
2017-10-24 15:09:16
675
原创 702 - 连接两个字符串中的不同字符
2017.10.24还是想用string.replaceAll,但是关于正则表达式,确实没有办法很好的处理。真是上火啊。后来用list这种笨笨的方法。public class Solution { /* * @param : the 1st string * @param : the 2nd string * @return: uncommon c
2017-10-24 10:13:03
1113
原创 697 - 判断是否为平方数之和
2017.10.24只查找一半就可以,如果全部查找的话,会超时。public class Solution { /* * @param : the given number * @return: whether whether there're two integers */ public boolean checkSumOfSquareNu
2017-10-24 09:39:27
2473
原创 108 - 分割回文串 II
2017.10.24理论上应该是很简单的 d[i][j] = min(d[i][k]+d[k+1][j]+1,d[i][j],但是如果单纯使用递归的话,显然会超时的。后来采用数组记录d[i][j]的值,基本通过97%,但仍旧会超时。在后来改变判断回文的办法,同样采用数组进行保存,这样就过了。public class Solution { /** * @para
2017-10-24 08:54:41
340
原创 99 - 重排链表
2017.10.23首先遍历链表,建立两个队列,一个存放前一半一个存放后一半。然后再遍历这两个队列,建立新的连接关系,重排链表。/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { *
2017-10-23 15:25:28
351
原创 427 - 生成括号
2017.10.20f(n)的值就是在f(n-1)的基础上,遇到左括号就加一个(),然后再在开头加一个()public class Solution { /* * @param n: n pairs * @return: All combinations of well-formed parentheses */ public List gener
2017-10-20 15:33:28
406
原创 371 - 用递归打印数字
2017.10.20N层递归,其实也就是每一次递归都可以出来N-1的结果。public class Solution { /* * @param n: An integer * @return: An array storing 1 to the largest number with n digits */ public ArrayList num
2017-10-20 11:11:37
323
原创 411 - 格雷编码
2017.10.20格雷编码,最主要的就是要了解编码产生的过程。这段是抄别人的,哈哈哈:如n=2时,格雷码为00,01,11,10.如需生成n=3的格雷码只需先将原序列高位加0变成000,001,011,010,再将原序列在高位加1并逆向添加到刚才生成的序列尾部,即000,001,011,010,110,111,101,100。也就是说,n+1位元格雷码是基于n位元格雷码产生的。pub
2017-10-20 09:33:27
372
原创 137 - 克隆图
2017.10.19这个好像采用递归的方法不太行得通。相当于广度遍历图,一个一个的新建节点,并且建立相应的联系。还是注意要设置visit,这样可以避免在出现环的情况下,程序陷入死循环。/** * Definition for undirected graph. * class UndirectedGraphNode { * int label; * Arra
2017-10-19 17:57:35
305
原创 178 - 图是否是树
2017.10.19首先要明白什么样子的图是数:没有环的连通图就是树。或者是图连通,且边数为n-1; public boolean validTree(int n, int[][] edges) { // write your code here HashMap> map = new HashMap<>(); for(int i = 0 ; i < n ;
2017-10-19 10:16:37
269
原创 176 - 图中两个点之间的路线
2017.9.37就是从一个点开始遍历,如果找到了另外一个点,就表示存在着路。需要注意的就是,要设置visit,不然如果出现环的话,就会陷入死循环。/** * Definition for Directed graph. * class DirectedGraphNode { * int label; * ArrayList neighbors; *
2017-10-19 09:37:16
449
原创 104-合并k个排序链表
2017.10.16.终于有时间继续刷刷题了。果然一做链表的题逻辑很清楚,就是这个写起来就很乱。k个链表就是两两的合并就好了。/** * Definition for ListNode. * public class ListNode { * int val; * ListNode next; * ListNode(int val) { *
2017-10-16 11:02:15
234
原创 95 - 验证二叉查找树
2017.9.29刚开始想采用递归的方法,先判断根和左节点右节点的关系,在判断左子树和右子树是不是查找树。然而这种想法逻辑上其实是错误的。 比如 10 / \ 2 15 / \ / \1 11 9 17这颗
2017-09-29 17:37:43
315
原创 90 - k数和 II
2017.9.29还是使用的递归的方式public class Solution { /* * @param A: an integer array * @param k: a postive integer <= length(A) * @param targer: an integer * @return: A list of lists
2017-09-29 17:11:14
420
原创 680 - Split String
2017.9.29如果单纯的使用递归的方式的话,会超出内存的限制。 F(S ) = F(s-1) + F(s-2)采用显式的递归就过了public class Solution { /* * @param : a string to be split * @return: all possible split string array */
2017-09-29 16:24:07
443
原创 685 - First Unique Number In Stream
2017.9.29这个题目是要求输出第一个非唯一的元素。如果直接用HashMap的话会失去顺序,所以需要使用LinkedHashMap。public class Solution { /* * @param : a continuous stream of numbers * @param : a number * @return: returns t
2017-09-29 15:56:25
301
原创 684 - Missing String
2017.9.29快放假了,做个简单的吧public class Solution { /* * @param : a given string * @param : another given string * @return: An array of missing string */ public static List missi
2017-09-29 15:40:55
1147
原创 671 - 循环单词
2017.9.28首先判断两个字符串的长度是不是相同。然后判断,字符串A两个进行拼接后,是不是包含着字符串B,就表示是不是循环单词了public class Solution { /* * @param words: A list of words * @return: Return how many different rotate words */
2017-09-28 16:02:58
477
原创 204 - 单例
2017.9.28用几种不同的方法实现了单例class Solution { /** * @return: The same instance of this class every time */ /************** 1 ****************** private static Solution instanc
2017-09-28 15:27:40
273
原创 211 - 字符串置换
2017.9.28这个String.replace 是正则替换的,看来是不能用了public class Solution { /* * @param A: a string * @param B: a string * @return: a boolean */ public static boolean Permutation(Stri
2017-09-28 15:12:42
375
原创 376 - 二叉树的路径和
2017.9.28先用递归的办法找到所有的根节点到叶子节点的路径。再一一计算和。/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { *
2017-09-28 10:26:23
340
原创 84 - 落单的数 III
2017.9.26不知道。。。有什么区别。。。public class Solution { /* * @param A: An integer array * @return: An integer array */ public List singleNumberIII(int[] A) { // write your c
2017-09-26 15:47:22
336
原创 83 - 落单的数 II
2017.9.26就是一个统计的过程吧。用HashMap轻松解决吧。public class Solution { /* * @param A: An integer array * @return: An integer */ public static int singleNumberII(int[] A) { // writ
2017-09-26 15:43:12
388
原创 79 - 最长公共子串
2017.9.26依次选取A中的子串,检查B中是不是包含就可以了public class Solution { /* * @param A: A string * @param B: A string * @return: the length of the longest common substring. */ public s
2017-09-26 15:28:21
364
原创 78 - 最长公共前缀
2017.9.26就是慢慢比较呗public class Solution { /* * @param strs: A list of strings * @return: The longest common prefix */ public String longestCommonPrefix(String[] strs) {
2017-09-26 15:09:00
304
原创 76 - 最长上升子序列
2017.9.26建立一个一维数组 arr[],表示当遍历到这个数时,当前的最长上升子序列。public class Solution { /* * @param nums: An integer array * @return: The length of LIS (longest increasing subsequence) */ public
2017-09-26 10:30:46
328
原创 75 - 寻找峰值
201.9.26这也是很鸡贼的一道题啊,开始对lintcode没有好感了。这题我只知道顺序遍历啊。可是顺序遍历会超时啊。然后从网上搜索了他人的答案,说要用二分查找,但是二分查找只有在有序的时候才可以使用啊。更加神奇的是,我用二分查找居然通过了。我就呵呵了。然后我自己写了一个测试用例【11,10,9,8,10,7】根本无法通过啊,也不知道在搞什么。恕我直言,真是垃圾。下边的代
2017-09-26 09:03:40
339
原创 74 - 第一个错误的代码版本
2017.9.26对二分查找的认知达到的新的高度,简直不明白为什么还会有这种操作。求取中间数的时候,如果我用 mid = (low + height)/2 就会超时;但是我如果用 mid = low + (height - low)/2 就会AC。真的是很鸡贼啊。/** * public class SVNRepo { * public static boolean i
2017-09-26 09:01:23
391
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人