UTF-8 Validation

2017-01-30
阅读 2 分钟
1.5k
1 byte: characters from 0 to 127 == ASCII2 bytes: characters from 127 to 20473 bytes: characters from 2048 to 655354 bytes: characters from 65536 to 1112064

Walls and Gates

2017-01-30
阅读 5 分钟
1.5k
看到discussion里面bfs还有一种写法。是把所有gates的点都先放到q里面,然后一起遍历。这种写法的好处是:保证了每个点都只被放进q一次,不会重复遍历。保证了时间复杂是O(MN), M = rooms.length, N = rooms[0].length。

Shortest Distance from All Buildings

2017-01-30
阅读 3 分钟
2.7k
这道题要求最短的距离,一般这种要求可以到的地方的距离,都需要把整个图遍历一遍,遍历一般就是bfs和dfs。这道题不用dfs的原因是:empty的位置到building的距离是按最小值来算的,用dfs每次如果放入depth不一定是最小的距离,每次都得更新,没有效率。这道题用bfs的原因:一样的原因,因为距离就是按照最小的距离来算的...

The Maze II

2017-01-29
阅读 5 分钟
2.5k
The Maze II 题目链接:[链接]一般这种题,给一个起点,给一个终点,最后要求最短的路径,都是用bfs来解。 {代码...} test的图不是很大,dfs也能ac。 {代码...}

Zigzag Iterator

2017-01-29
阅读 2 分钟
1.7k
这道题是说有两个list,来回返回两个list里面的值,要求用iterator来做。所以可以用两个iterator来分别存这两个list的值,再用一个int指针来表示现在应该取哪个list里面的值。

Word Squares

2017-01-29
阅读 7 分钟
2.5k
这道题如果用上一题的方法,一个一个试的话,时间复杂度太高。所以要另想办法。首先这种需要求出所有结果的题,一般都是用dfs(backtracking)的。然后这道题的思路是单词一个一个确定。因为题目已经说了word的长度范围是1到5,最多考虑五个单词即可。

Binary Tree Longest Consecutive Sequence

2017-01-29
阅读 3 分钟
1.5k
这一个类型的题都一样用dfs,分治的思想。两种方式:一种用global variable,另一种直接把sequence的长度作为返回值,思路都一样。也可以直接在当前层对左右节点分别处理,本质和前面一样的。iteration也可以解,用stack或者queue来做,但是本质都是dfs。1.用global variable

Wildcard Matching

2017-01-29
阅读 3 分钟
1.9k
另一种思路是greedy,只需要O(1)的空间。和regular expression不同,这道题的star符号和前面的character没有关系,不需要一起考虑。而且star是可以匹配任何string的,"aa", "ab"都可以。所以check是否匹配的时候,只需要按位一个一个判断就行了。用两个指针i和j分别扫描s和p,loop过程中有以下几种情况:

Range Sum Query

2017-01-28
阅读 6 分钟
1.3k
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive. Example: Given nums = [-2, 0, 3, -5, 2, -1]sumRange(0, 2) -> 1 sumRange(2, 5) -> -1 sumRange(0, 5) -3 Note:You may assume that the array does not change. There are many calls to sumRange fu...

OOP Design

2017-01-15
阅读 1 分钟
1.2k
Step 1: Handle Ambiguity (figure out the question)Step 2: Define the Core ObjectsStep 3: Analyze RelationshipsStep 4: Investigate Actions (details)

Insert Delete GetRandom O(1) & Duplicates allowed

2017-01-14
阅读 4 分钟
2.6k
Design a data structure that supports all following operations in average O(1) time. insert(val): Inserts an item val to the set if not already present. remove(val): Removes an item val from the set if present. getRandom: Returns a random element from current set of elements. Each element must ha...

Serialize and Deserialize Binary Tree & BST

2017-01-14
阅读 4 分钟
2.8k
Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.Design an algorithm to serialize...

Meeting Rooms & Meeting Rooms II

2017-01-14
阅读 2 分钟
2.5k
Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2,e2],...] (si < ei), determine if a person could attend all meetings.

Construct Binary Tree from Traversal

2017-01-14
阅读 2 分钟
1.3k
思路在preorder的顺序里,先root,然后再左右。所以根据preorder可以知道root的。而在inorder的顺序里,是先左再root再右,所以在inorder里找到root之后就可以知道left和right分别有多少。接着再分别在left和right的subarray里面重复找root以及左右的过程。

String题——字符串数组改变顺序

2017-01-11
阅读 2 分钟
4.4k
输入为一个字符串数组和一个int数组,输出的结果是该字符串数组通过int数组相应变换后得到的数组 For example: 输入["a", "b", "c", "d"] 和 [2, 0, 1, 3], 输出应该为["b", "c", "a", "d"], int数组第0个位置上的值为2, 表示"a"应该放到结果的第2个位置上 每次只要不停的交换字符串数组对应位置的值以及int数组对应位...