自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (2)
  • 收藏
  • 关注

原创 Single Number II

1.题目给出3*n + 1 个的数字,除其中一个数字之外其他每个数字均出现三次,找到这个数字。给出 [1,1,2,3,3,3,2,2,4,1] ,返回 42.算法统计整数的每一位来得到出现次数。我们知道如果每个元素重复出现三次,那么每一位出现1的次数也会是3的倍数,如果我们统计完对每一位进行取余3,那么结果中就只剩下那个出现一次的元素。 public int singleNu

2016-12-31 22:32:58 400

原创 Copy List with Random Pointer

1.题目给出一个链表,每个节点包含一个额外增加的随机指针可以指向链表中的任何节点或空的节点。返回一个深拷贝的链表。2.算法

2016-12-30 22:16:35 144

原创 Plus One

1.题目给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。该数字按照大小进行排列,最大的数在列表的最前面。给定 [1,2,3] 表示 123, 返回 [1,2,4].给定 [9,9,9] 表示 999, 返回 [1,0,0,0].2.算法思路是维护一个进位,从后往前扫描,如果有进位扫描下一位,如果没有直接返回,如果到了最高位任然

2016-12-30 22:03:51 204

原创 Word Break

1.题目给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。s = "lintcode"dict = ["lint","code"]返回 true 因为"lintcode"可以被空格切分成"lint code"2.算法

2016-12-29 21:41:27 189

原创 Minimum Path Sum

1.题目给定一个只含非负整数的m*n网格,找到一条从左上角到右下角的可以使数字和最小的路径。2.算法这道题我们还用动态规划,递推式是res[i][j]=min(res[i-1][j], res[i][j-1])+grid[i][j]在Unique Paths中,我们假设每个格子权重都是1,而在Unique Paths II中我们假设障碍格子的权重是无穷大,所以永远不会选择。剩下

2016-12-29 21:07:10 162

原创 Insert Interval

1.题目给出一个无重叠的按照区间起始端点排序的区间列表。在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。插入区间[2, 5] 到 [[1,2], [5,9]],我们得到[[1,9]]。插入区间[3, 4] 到[[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]。2.算法

2016-12-29 20:24:00 408

原创 Unique Paths II

1.题目"不同的路径" 的跟进问题:现在考虑网格中有障碍物,那样将会有多少条不同的路径?网格中的障碍和空位置分别用 1 和 0 来表示。m 和 n 均不超过100如下所示在3x3的网格中有一个障碍物:[ [0,0,0], [0,1,0], [0,0,0]]一共有2条不同的路径从左上角到右下角。2.算法每次我们要判断一下是不是障碍,如果是

2016-12-29 19:55:48 378

原创 Unique Paths

1.题目有一个机器人的位于一个M×N个网格左上角(下图中标记为'Start')。机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为'Finish')。问有多少条不同的路径?n和m均不超过1001,11,21,31,41,51,61,72,1      3,1

2016-12-29 18:41:28 240

原创 Permutation Sequence

1.题目给定 n 和 k,求123..n组成的排列中的第 k 个排列。1 ≤ n ≤ 9对于 n = 3, 所有的排列如下:123132213231312321如果 k = 4, 第4个排列为,231.

2016-12-29 11:03:56 167

原创 Spiral Matrix II

1.题目给你一个数n生成一个包含1-n^2的螺旋形矩阵n = 3矩阵为[ [ 1, 2, 3 ], [ 8, 9, 4 ], [ 7, 6, 5 ]]2.算法分层,然后按照上右下左的顺序放入数组中 public int[][] generateMatrix(int n) { // Write your code here

2016-12-29 11:01:55 731

原创 Rotate List

1.题目给定一个链表,旋转链表,使得每个节点向右移动k个位置,其中k是一个非负数给出链表1->2->3->4->5->null和k=2返回4->5->1->2->3->null2.算法这是一道链表操作的题,就是用runner和Walker定位到要旋转的那个点,以下个点为开头,以当前点为结尾重组链表,需要注意的点就是旋转的结点数可能超过链表长度,所以我们要

2016-12-28 21:45:00 525

原创 Length of Last Word

1.题目给定一个字符串, 包含大小写字母、空格' ',请返回其最后一个单词的长度。如果不存在最后一个单词,请返回 0 。给定 s = "Hello World",返回 5。2.算法 public int lengthOfLastWord(String s) { // Write your code here if (s == null ||

2016-12-28 21:30:29 481

原创 Merge Intervals

1.题目给出若干闭合区间,合并所有重叠的部分。给出的区间列表 => 合并后的区间列表:[ [ [1, 3], [1, 6], [2, 6], => [8, 10], [8, 10], [15, 18] [15, 18] ]]

2016-12-28 20:38:58 495

原创 Reorder List

1。题目给定一个单链表L: L0→L1→…→Ln-1→Ln,重新排列后为:L0→Ln→L1→Ln-1→L2→Ln-2→…必须在不改变节点值的情况下进行原地操作。给出链表 1->2->3->4->null,重新排列后为1->4->2->3->null。2.算法这个题目是链表操作的题目,分三步完成1.找到链表的中间并把链表分为两半2.逆序得到的第二个链表

2016-12-28 19:37:20 845

原创 Spiral Matrix

1.题目给定一个包含 m x n 个要素的矩阵,(m 行, n 列),按照螺旋顺序,返回该矩阵中的所有要素。给定如下矩阵:[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ]]应返回 [1,2,3,6,9,8,7,4,5]2.算法这道题的算法是一层一层进行遍历,依次遍历上右下左,当没说是否为方阵,如果不是阵,则行和列最小的一般为层数

2016-12-28 18:57:49 403

原创 Rotate Image

1.题目给定一个N×N的二维矩阵表示图像,90度顺时针旋转图像。给出一个矩形[[1,2],[3,4]],90度顺时针旋转后,返回[[3,1],[4,2]]2.算法这道题比较简单,就是把矩阵分为N/2层,从外层向里层旋转,矩阵包括上下左右,把上边放到右边,把右边放到下边,把下边放到左边,把左边放到上边,其中每循环一边时要循环到最大的减去层数减去1 public void r

2016-12-28 17:30:36 129

转载 Anagrams

1.题目给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。对于字符串数组 ["lint","intl","inlt","code"]返回 ["lint","inlt","intl"]2.算法在这道题中我们维护一个HashMap,其中的key是每个字符串排序后又重新

2016-12-28 17:06:25 176

原创 Jump Game II

1.题目给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。   你的目标是使用最少的跳跃次数到达数组的最后一个位置。给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最后一个位置,一共跳跃2次)2.算法ret:目前为止

2016-12-27 21:47:45 347

转载 Jump Game

1.题目给出一个非负整数数组,你最初定位在数组的第一个位置。   数组中的每个元素代表你在那个位置可以跳跃的最大长度。    判断你是否能到达数组的最后一个位置。A = [2,3,1,1,4],返回 true.A = [3,2,1,0,4],返回 false.2.算法我们维护两个变量,一个是从前一步出发能够到达的最远距离,一个是从当前出发能够到达的最远距离

2016-12-27 21:20:57 142

原创 Maximum Subarray

1.题目在数组中找连续的数,使其和最大2.算法这是一个动态规划的题目,我们维护两个变量,一个为局部最优,一个全局最优local = Math.max(local + a[i], local);global = Math.max(global, local); public int maxSubArray(int[] a) { if (a == null || a.l

2016-12-26 21:21:28 128

转载 Permutations

1.题目给定一个数字列表,返回其所有可能的排列2.算法算法一:这是一个np问题,方法还是原来那个套路,还是用一个循环递归处理子问题。前面的数有可能放到后面,所以我们需要维护一个used数组来表示该元素是否已经在当前结果中,因为每次我们取一个元素放入结果,然后递归剩下的元素,所以不会出现重复。public ArrayList> permute(int[] num) {

2016-12-26 19:33:12 183

原创 Linked List Cycle II

1.题目给定一个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。给出 -21->10->4->5, tail connects to node index 1,返回102.算法当我们找到两个指针相遇的点时t = X+nY+K2t = X+mY+K2X + 2nY + 2K = X + mY + KX+K  =  (m-2n)Y

2016-12-26 18:32:51 119

原创 Linked List Cycle

1.题目给定一个链表,判断它是否有环。给出 -21->10->4->5, tail connects to node index 1,返回 true2.算法假设有两个指针walker和runner,walker用一倍速度向前走,runner用2倍速度向前走,当两指针相遇时,返回true public boolean hasCycle(ListNode head) {

2016-12-26 16:38:36 124

原创 Longest Common Prefix

1.题目给k个字符串,求出他们的最长公共前缀(LCP)在 "ABCD" "ABEF" 和 "ACEF" 中,  LCP 为 "A"在 "ABCDEFG", "ABCEFG", "ABCEFA" 中, LCP 为 "ABC"2.算法这道题是字符处理的题,用暴力方法,以第一个字符串为基准,对每个字符串以第一个位置开始,比较是不是和标准一致,如果不同,则跳出循环返回当

2016-12-25 21:33:33 120

原创 Candy

1.题目有 N 个小孩站成一列。每个小孩有一个评级。按照以下要求,给小孩分糖果:每个小孩至少得到一颗糖果。 评级越高的小孩可以得到更多的糖果。需最少准备多少糖果?给定评级 = [1, 2], 返回 3.给定评级 = [1, 1, 1], 返回 3.给定评级 = [1, 2, 2], 返回 4. ([1,2,1]).多个小朋友站成一

2016-12-25 20:29:36 184

转载 Roman to Integer

1.题目给定一个罗马数字,将其转换成整数。返回的结果要求在1到3999的范围内。IV -> 4XII -> 12XXI -> 21XCIX -> 992.算法就是维护一个整数,如果1的下一位对应的位为5或10,则减去1,否则加上1,遇到5或者10就直接加上对应位的5或者10 public int romanToInt(String

2016-12-25 19:17:28 114

转载 Integer to Roman

1.题目Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.科普了一下表达方式,理解了就不复杂了。I = 1;V = 5;X = 10;L = 50;C = 100;D = 500;M = 100

2016-12-25 18:27:04 115

原创 Container With Most Water

1.题目给定 n 个非负整数 a1, a2, ..., an, 每个数代表了坐标中的一个点(i, ai)。画 n 条垂直线,使得 i 垂直线的两个端点分别为(i, ai)和(i, 0)。找到两条线,使得其与x 轴共同构成一个容器,以容纳最多水。给出[1,3,2], 最大的储水面积是2.2.算法两个指针从两端开始向中间靠拢,如果左端线段短于右端,那么左端右移,反之右端

2016-12-25 15:27:46 371

原创 Palindrome Number

1.题目判断整数是否回文,不能用额外的空间2.算法这道题的基本思路是第一位和最后一位相比,后面的位比较好找,找前面的位时,我们首先找到最高位10倍基,每比较一位除100; public boolean isPalindrome(int x) { if (x < 0) { return false; } int div = 1; while (div <

2016-12-25 15:22:20 143

原创 String to Integer (atoi)

1.题目问题:将字符窜转换成数字实现atoi这个函数,将一个字符串转换为整数。如果没有合法的整数,返回0。如果整数超出了32位整数的范围,返回INT_MAX(2147483647)如果是正整数,或者INT_MIN(-2147483648)如果是负整数"10" =>10"-1" => -1"123123123123123" => 2147483647"1.0" =

2016-12-25 14:25:15 205

原创 ZigZag Conversion

1.题目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 legibility)P A H NA P

2016-12-25 10:38:27 108

原创 Combinations

1.题目组给出两个整数n和k,返回从1......n中选出的k个数的组合。例如 n = 4 且 k = 2返回的解为:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4]]2.算法这道题属于np问题,用一个循环递归处理子问题,到规定数量后直接反回 public ArrayList> combine(int n, int k) {

2016-12-25 10:28:28 147

原创 Insertion Sort List

1.题目用插入排序对链表排序Given 1->3->2->0->null, return 0->1->2->3->null2.算法这道题是指定实现插入排序。插入排序是一种O(n^2)复杂度的算法,基本思想就是每次循环找一个元素在当前排好序的结果中的相对位置,然后插入进去对链表进行插入排序的正确方法是:新建一个头节点,遍历原来的链表,对原链表的每个节点找到新链表中适合插入位置的前

2016-12-25 09:46:35 138

原创 Sort List

1.题目在 O(n log n) 时间复杂度和常数级的空间复杂度下给链表排序。给出 1->3->2->null,给它排序变成 1->2->3->null.2.算法

2016-12-24 21:45:43 120

转载 Max Points on a Line

1.题目给出二维平面上的n个点,求最多有多少点在同一条直线上。给出4个点:(1, 2), (3, 6), (0, 0), (1, 3)。一条直线上的点最多有3个。2.算法基本算法是每次以一个点为基准,看后面的每个点和他所够成的直线,维护一个HashMap, key是跟这个点构成直线的斜率的值, 而value就是该斜率对应的点的数量, 计算它的斜率, 如果已经

2016-12-24 20:55:36 146

原创 First Missing Positive

1.题目给出一个无序的正数数组,找出其中没有出现的最小正整数。如果给出 [1,2,0], return 3如果给出 [3,4,-1,1], return 22.算法算法的基本思路是利用数组的index作为数组本身的索引,把正数按照递增顺序放在数组中,即让A[0]=1, A[1]=2, A[2]=3, ... , 这样一来,最后如果哪个数组元素违反了A[i]=i+1即说明i+1就

2016-12-24 17:21:10 118

原创 Combination Sum

1.题目给出一组候选数字(C)和目标数字(T),找到C中所有的组合,使找出的数字和为T。C中的数字可以无限制重复被选取。例如,给出候选数组[2,3,6,7]和目标数字7,所求的解为:[7],  [2,2,3]给出候选数组[2,3,6,7]和目标数字7返回 [[7],[2,2,3]]2.算法这道题也是问题,方法仍然是N-Queens中介绍的套路。基本思路是先排

2016-12-24 16:24:49 174

原创 Sudoku Solver

1.题目Write a program to solve a Sudoku puzzle by filling the empty cells.Empty cells are indicated by the character '.'.You may assume that there will be only one unique solution.A sudoku p

2016-12-24 15:18:14 162

原创 Valid Sudoku

1.题目请判定一个数独是否有效。该数独可能只填充了部分数字,其中缺少的数字用 . 表示。下列就是一个合法数独的样例。2.算法用暴力方发,检测每一行,每一列,每个单元格是否合法public class Dept { public boolean isValidSudoku(char[][] board) { if (board == null || board.

2016-12-24 14:47:18 143

原创 Trapping Rain Water

1.题目给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返回 62.算法算法1:基本思路是维护一个数组,记录一个数左边和右边的最大高度的最小值,如上图所示第3个数是0,左边最大为1,右边最大高度为2取1,又由于第3个数为0则能接1面积雨水。

2016-12-24 10:48:41 330

W3CSchool全套离线手册

W3CSchool全套离线手册

2016-12-01

Linux常用命令全集

Linux 命令全集

2016-12-01

空空如也

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

TA关注的人

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