自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 坐标型动态规划

坐标型动态规划:state: f[x]表示从起点到坐标x;          f[x, y]表示从起点走到坐标x, y;function: 研究走到x, y之前的一步(一)Trianglehttps://leetcode.com/problems/triangle/description/题目:给出一个三角形,返回从顶到底和最小的路径和,只能移动到下一行的相邻位置。如:[ [2], ...

2018-02-22 01:18:21 366

原创 Heap/Priority Queue问题(堆)

(一)Ugly Number题目:写一个程序来检测一个整数是不是丑数。          丑数的定义是,只包含质因子 2, 3, 5 的正整数。比如 6, 8 是丑数,14不是。默认1为丑数;解答:若一个数可以被2或3或5整数,则将其更新为整除后的数。重复该操作直到不能被3个数中的任意一个整除。若最终结果为1,说明是丑数,否则不是;代码:class Solution { 

2018-02-06 13:19:20 402

原创 Hash高频

(一)LRU (Least Recently Used) cache https://leetcode.com/problems/lru-cache/description/题目:为LRU缓存策略设计一个数据结构,它应该支持以下操作:获取数据(get)和写入数据(set)。           获取数据get(key):如果缓存中存在key,则获取其数据值,否则返回-1。   

2018-02-06 05:14:07 159

原创 Min Stack(栈高频)

Min Stackhttps://leetcode.com/problems/min-stack/description/题目:设计一个栈,不仅满足栈的基本功能,还能在固定的时间取到栈中的最小元素;解答:使用两个栈:一个栈stack正常存储元素;                               另一个栈minStack与stack同步存储、删除元素,但是存储的内容为当前

2018-02-01 02:45:39 203

原创 Iterator in Stack/Queue

(一)Flatten Nested List Iterator题目:要求用迭代器将嵌套的链表展开,如 [1,2[3,4],5] 返回[1,2,3,4,5]。要求实现函数 next() 以返回下一个展开的数字,函数hasNext() 以返回是否存在下一个需要展开的数。           题目已定义数据类型NestedInteger中包含3个函数:isInteger()用来判断是整数还是嵌套

2018-02-01 01:19:36 312

原创 反转栈或队列中的元素

(一)Implement Stack using Queues题目:用队列的方式实现栈的操作;解答:用两个队列的方式实现;优化:使用一个队列,但是在push操作时,注意将元素顺序反转:             public void push(int x) {                   queue1.offer(x);                   for

2018-01-23 01:06:56 1957 1

原创 Two Sum

(一)Two Sumhttps://leetcode.com/problems/two-sum/description/题目:对一个无重复元素的无序数组,找到满足两个数和为target的组合并返回两数下标(该数组必定且只存在一个满足条件的组合,且一个元素不可使用两次);解答:法一:HashMap:将 nums[index] 和 index 作为key, value值存入hash

2018-01-22 07:04:52 116

原创 Partition

(一) Sort Colors题目:一个无序数组仅仅含有0,1,2三种元素,要求按照0,1,2的顺序排列;解答:调用两次快速选择的方法;代码:class Solution {    public void sortColors(int[] nums) {        quickSelect(nums, 0);        quickSelect(nums, 1);

2018-01-21 11:28:43 191

原创 Two Pointers

两根指针问题,分为两类:同向指针、相向指针,时间复杂度均为O(n)(一)Move Zeroes (同向指针)https://leetcode.com/problems/move-zeroes/description/题目:将数组中所有0元素移动到数组最右边,非零元素顺序不变;解答:用快慢两指针。快指针每次向前挪一位,若遇到不为0的数,则将快慢指针位置交换并将慢指针挪一位(依次遍

2018-01-21 09:29:24 316

原创 Quick Sort(快速排序)

Quick Sort : 时间复杂度为O(logn)思路:参考https://www.cnblogs.com/luomeng/p/10587492.htmlpublic void quickSort(int[] nums, int low, int high) { if (low >= high) { return; } ...

2018-01-19 14:20:43 623

原创 有序数组

(一)merge sorted arrayshttps://leetcode.com/problems/merge-sorted-array/description/题目:将有序数组nums2合并到有序数组nums1中(num1空间足够,m、n分别表示两个数组里初始化的元素个数;解答:从nums1的第m+n-1个位置开始更新(从最大的开始),如果从最小的开始更新需要不断

2018-01-17 23:42:05 806

原创 链表高频

(一)copy list with random pointerhttps://leetcode.com/problems/copy-list-with-random-pointer/description/题目:复制一个含有random指针的链表;解答:分为三步:1.复制链表值:1 -> 2 ->3 -> null 变成 1 -> 1' -> 2 -> 2' -> 3 -> 3'

2018-01-14 09:38:37 97

原创 链表Reverse List

(一)reverse linked listhttps://leetcode.com/problems/reverse-linked-list/description/题目:逆转链表;解答:从头到尾依次变换指针方向;代码:class Solution {    public ListNode reverseList(ListNode head) {        L

2018-01-12 09:14:04 207

原创 链表Dummy Node

(一)Partition Listhttps://leetcode.com/problems/partition-list/description/题目:给出一个链表和一个x值,要求返回一个顺序链表使得小于x的数在链表前面,大于等于x的数在链表后面,保证节点顺序不变。          例如:1->3->2->4->2, 3 变成:1->2->2->3->4解答:建立两个新的左

2018-01-12 09:11:52 4780

原创 Tree Traversal(树的遍历)

(一)Binary Tree Preorder Traversal https://leetcode.com/problems/binary-tree-preorder-traversal/description/题目:给定二叉树,返回其前序遍历(根左右);解答:使用栈或者递归;代码:*************栈****************class Solution

2018-01-09 12:43:59 1005

原创 排列搜索问题

采用DFS,顺序有关。(一)Permutationshttps://leetcode.com/problems/permutations/description/题目:解答:代码:

2018-01-01 08:15:16 187

原创 组合搜索问题

采用DFS的思想,顺序无关。递归三要素:递归的定义、递归的拆解、递归的出口。(一)Subsetshttps://leetcode.com/problems/subsets/description/题目:给出一个数组,返回该数组的全部子集;解答:递归函数(详见代码) 采用index以避免重复子集第一次犯错:list是动态的,即使在添加到结果

2018-01-01 01:04:55 739

原创 图上的搜索问题(word ladder & world ladder ||)

(一)word ladderhttps://leetcode.com/problems/word-ladder/description/题目:给出起始两个单词和一个字典,每次只能变化一个字母,且变化后的单词必须存在于字典当中。要求返回变换成功的最少变换次数。解答:(BFS)将起始单词放入队列,建立一个hashset存放已经变换过的单词(避免重复);          若队列不空

2017-12-30 00:12:45 273

原创 棋盘问题/矩阵问题 (Number of Islands)

矩阵是图的特殊情况,常采用BFS。注意点:1、判断边界时,将判断条件封装成函数,增加代码可读性;2、坐标变换数组:int[] deltaX = {1, 0, 0, -1};                               int[] deltaY = {0, 1, -1,0};                               for ( int i =

2017-12-29 07:05:02 636

原创 Topological Sorting(拓扑排序必考题)

http://www.lintcode.com/en/problem/topological-sorting/题目:将图中节点进行拓扑排序(假设图中至少存在一个拓扑序列)         class DirectedGraphNode {               int label;               ArrayList neighbors;

2017-08-10 09:25:13 939

原创 Clone Graph

http://www.lintcode.com/en/problem/clone-graph/题目:完成图的深度复制(包含点和边)解答:1、使用BFS获得图中所有的点;           2、遍历所有点,将图中每个点复制并存入HashMap中;           3、遍历所有点,将每个点的neighbor值依次放入其neighbors的arraylist中。

2017-08-09 11:32:07 151

原创 Graph Valid Tree

http://www.lintcode.com/en/problem/graph-valid-tree/题目:判断图是否是树 n  表示 0 ~ n - 1个点, edges表示边,如【0,1】表示连接0和1的边(无重复边)解答:需要满足两个条件:         (1)边的个数 = n - 1;           (2) 所有的边可以将全部点连通;将每个点作为key

2017-08-09 08:48:14 236

原创 Binary Tree Serialization

http://www.lintcode.com/en/problem/binary-tree-serialization/题目:将二叉树序列化,将序列化的二叉树还原;解答:按照二叉树序列化规则,如: 3 / \9 20 / \ 15 7序列化后为:{3,9,20,#,#,15,7}需注意大括号、逗号第一次犯错:sb.toString()

2017-08-07 16:12:30 209

原创 Binary Tree Level Order Traversal

http://www.lintcode.com/en/problem/binary-tree-level-order-traversal/题目:给定二叉树,按层级顺序输出。如:二叉树{3,9,20,#,#,15,7} 3 / \ 9 20 / \ 15 7输出:[ [3], [9,20], [15,7]]...

2017-08-07 11:39:58 125

原创 Intersection of Two Arrays(多种方法)

http://www.lintcode.com/en/problem/intersection-of-two-arrays/题目:求两数组的交集(两数组长度分别为m,n),不包含重复元素方法一:Hash时间复杂度 O(n + m)   空间复杂度 O(min(m, n))解答:将第一个数组的元素存入HashSet, 遍历第二个数组若有元素存在于HashSet中,

2017-08-01 15:45:57 288

原创 Subarray子数组

该题型多采用prefixSum的方法:(一)Maximum Subarray (Frequent ++)http://www.lintcode.com/en/problem/maximum-subarray/题目:找到数组中总和最大的子集并返回该子集总和;解答:将该数组的prefixSum存储在新数组中(亦可覆盖原数组节省空间),因为sum(i ~ j) = prefixSum

2017-08-01 09:26:00 940

原创 排序链表

(一)Sort Listhttps://leetcode.com/problems/sort-list/description/题目:将链表排序,使得时间复杂度为O(nlogn)解答:方法一:归并排序:将链表分成左右两等分,对于每个等分进行递归调用,直到每个等分只含有一个节点; 第一次犯错:在拆分左右时,忘记将左链表尾部指向null;代码:cl...

2017-07-31 09:35:26 155

空空如也

空空如也

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

TA关注的人

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