自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 95 - 验证二叉查找树

2017.9.29刚开始想采用递归的方法,先判断根和左节点右节点的关系,在判断左子树和右子树是不是查找树。然而这种想法逻辑上其实是错误的。 比如             10          /         \        2           15    /      \        /     \1         11    9      17这颗

2017-09-29 17:37:43 297

原创 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 397

原创 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 422

原创 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 281

原创 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 1105

原创 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 451

原创 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 252

原创 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 348

原创 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 316

原创 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 313

原创 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 363

原创 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 339

原创 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 287

原创 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 303

原创 75 - 寻找峰值

201.9.26这也是很鸡贼的一道题啊,开始对lintcode没有好感了。这题我只知道顺序遍历啊。可是顺序遍历会超时啊。然后从网上搜索了他人的答案,说要用二分查找,但是二分查找只有在有序的时候才可以使用啊。更加神奇的是,我用二分查找居然通过了。我就呵呵了。然后我自己写了一个测试用例【11,10,9,8,10,7】根本无法通过啊,也不知道在搞什么。恕我直言,真是垃圾。下边的代

2017-09-26 09:03:40 318

原创 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 365

原创 63 - 搜索旋转排序数组 II

2017.9.25哇,完全不知道这三道搜索区间的题是在考察什么玩意儿,,,,,,,不知道有数重复和不重复会有什么影响啊。public class Solution { /* * @param A: an integer ratated sorted array and duplicates are allowed * @param target: An in

2017-09-25 16:41:54 241

原创 62 - 搜索旋转排序数组

2017.9.25不知道从头开始查找会不会超时,没有尝试。稍微优化了一下下。和首元素和末元素先比较。如果大于首元素,则从头开始遍历。如果小于尾元素,则从尾开始遍历。public class Solution { /* * @param A: an integer rotated sorted array * @param target: an integer

2017-09-25 16:37:48 245

原创 61 - 搜索区间

2017.9.25这个题我真的是醉了。刚开始用二分查找做的,然后超时了。后来就那么顺序遍历,居然就过了。。。。。不知道这个题想要考察什么东西。public class Solution { /* * @param A: an integer sorted array * @param target: an integer to be inserted

2017-09-25 16:25:34 321

原创 59 - 最接近的三数之和

2017.9.25做了好几个题了,发现自己刚开始做的求三个数之和的那个题,对数组划分,根本没有什么卵用啊。这个题只要多增加一个记录最小差的变量就可以了。public class Solution { /* * @param numbers: Give an array numbers of n integer * @param target: An inte

2017-09-25 16:02:30 345

原创 58 - 四数之和

2017.9.25四数之和其实可以转化为三数之和。对于数组中的每一个数,可以转化为 求解  threeSum(num[i], target - num[i])public class Solution { /* * @param numbers: Give an array * @param target: An integer * @return

2017-09-25 15:53:31 459

原创 57 - 三数之和

2017.9.25首先对数组进行排序。然后使用div对数组进行划分,div左边为小于等于0的数,div右边为大于0的数。然后问题就转化成为,从左边找两个数 + 右边的一个数等于0;从右边找两个数 + 左边的一个数等于0;在查找的过程中,注意跳过重复的元素,即可。public class Solution { /* * @param numbers: Give

2017-09-25 11:05:32 261

原创 51 - 上一个排列

2017.9.25可以理解为下一个排列的逆思路。下一个排列,是将一个升序序列逐步调整为降序序列的过程。上一个排列,可以理解为将一个降序序列逐步调整为升序序列的过程。这样,首先就是从后向前遍历找到 num[flag]>num[flag+1]然后再从后向前遍历,找到比num[flag]小的最大值。交换位置后,排序。注意这里的排序应该是降序的。public class Solut

2017-09-25 10:21:56 409

原创 52 - 下一个排列

2017.9.22首先 ,初始排列一定是递增的。排列就是然后不断将最大值慢慢向前移动的过程。也可以理解为讲一个升序的数组慢慢变成一个降序数组的样子。假如 ,给定一个排列为  1,5,7,6,2,1。   从后往前看,[7,6,2,1]一直是降序的情况,直到在5这里出现了不同。这个时候,可以这样理解,就是固定了 首位 15之后,剩下数字做完了所有的排列,这个时候,需要做的是从后边的数字里

2017-09-22 15:47:51 357

原创 49 - 字符大小写排序

2017.9.22这个快排的思想真的是很有用啊public class Solution { /* * @param chars: The letter array you should sort by Case * @return: nothing */ public void sortLetters(char[] chars) {

2017-09-22 10:18:03 390

原创 48 - 主元素 III

2017.9.22public class Solution { /* * @param nums: A list of integers * @param k: An integer * @return: The majority number */ public int majorityNumber(List nums, int k

2017-09-22 09:59:09 360

原创 47 - 主元素 II

2017.9.22应该就是个计数问题吧public class Solution { /* * @param nums: a list of integers * @return: The majority number that occurs more than 1/3 */ public int majorityNumber(List nums)

2017-09-22 09:56:13 304

原创 42 - 最大子数组差

2017.9.22与最大子数组的思路类似,只不多要寻找部分和的最大值和最小值然后再进行比较。public class Solution { /* * @param nums: A list of integers * @return: An integer indicate the value of maximum difference between tw

2017-09-22 09:40:37 383

原创 42 - 最大子数组 II

2017.9.19居然写了一天的题public class Solution { /* * @param nums: A list of integers * @return: An integer denotes the sum of max two non-overlapping subarrays */ public static int

2017-09-19 18:00:30 359

原创 40 - 用栈实现队列

2017.9.19public class MyQueue { private Stack stack1; private Stack stack2; public MyQueue() { // do intialization if necessary stack1 = new Stack(); stack2 = new Stack(

2017-09-19 10:46:37 335

原创 38 - 搜索二维矩阵 II

2017.9.19就是不断缩小检索范围就可以了public class Solution { /* * @param matrix: A list of lists of integers * @param target: An integer you want to search in matrix * @return: An integer ind

2017-09-19 10:36:28 441

原创 36 - 翻转链表 II

2017.9.18/** * Definition for ListNode * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */

2017-09-18 17:37:11 408

原创 34 - N皇后问题 II

2017.9.18public class Solution { /* * @param n: The number of queens. * @return: The total number of distinct solutions. */ public static int res; public static int totalN

2017-09-18 16:23:46 442

原创 33 - N皇后问题

2017.9.18呵呵,直到今天才知道皇后问题是什么问题。就是不可以同行同列同斜线。采用回溯法,一个一个试,就可以了。public class Solution { /* * @param n: The number of queens * @return: All distinct solutions */ public static

2017-09-18 15:46:29 403

原创 312 - 最小子串覆盖

2017.9.18题目本身应该不难首先从源字符串的第一个字符开始查找,如果在target包含这个字符则在target中去掉这个字符。查找完毕时,如果target为空串,则表示源字符串中是包含目标字符串的。期间需要记录start和end的位置。第一次查找完毕时,需要从start+1的位置重新进行查找,如果找到的新的字符串的长度小于上边查找到的字符串的长度,则进行结果的替换工作

2017-09-18 10:37:24 548

原创 31 - 数组划分

2017.9.18数组划分,采用的就是快排的思路。细节需要处理一下,比如数组都小于k的时候,要返回数组的长度。以及当nums【height】public class Solution { /* * @param nums: The integer array you should partition * @param k: An integer

2017-09-18 08:58:46 550

原创 29 - 交叉字符串

2017.9.14就暴力一点,一个字符一个字符的比较吧。public class Solution { /* * @param s1: A string * @param s2: A string * @param s3: A string * @return: Determine whether s3 is formed by interl

2017-09-14 18:30:53 271

原创 18 - 带重复元素的子集

2017.9.14写了一个新的函数 peekUnique(int[] nums,int k)。就是从一个数组中挑选k个数,有几种选择方案。这样当求数组的子集的时候,就是k从1 到nums.length的peekUnique之和。从n个数中选取k个数的公式为   f(n,k) = f(n-1,k)+f(n-1,k-1);public class Solution {

2017-09-14 17:42:15 299

原创 17 - 子集

2017.9.14首先 子集一定包含一个空子集。除去空子集。子集中包含的元素个数 为 1 ~ nums.length由于nums中的数字都不相同,又要求是非降序排列。因此,得到元素个数为 i 的子集 ,只需要 在元素个数为i-1的子集上进行添加即可。class Solution { /** * @param S: A set of numbers. *

2017-09-14 16:49:38 250

原创 16 - 带重复元素的排列

2017.9.14如果带有重复元素,那么当元素重复的时候,直接continue跳出循环进行下一个就好了。这道题不同于第15道题全排列的地方是输出必须要按顺序输出,不然会报错。所以需要提前对数组进行排序。public class Solution { /* * @param nums: A list of integers * @return: A li

2017-09-14 16:02:50 377

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除