Leetcode
iteye_6051
这个作者很懒,什么都没留下…
展开
-
2sum, 3sum, 4sum和3sum closest总结
[size=medium] 2sum, 3sum, 4sum和3sum closest是四道类似的题目,后面三个都是2sum的延伸。[/size][b]1,2sum[/b]给定一个数组numbers[]和一个目标数值target,从数组中找到两个元素,使它们的和等于目标元素。返回这两个值的索引indices,并且index1 大于index2。(假设只有一个结果)例如:输入: nu...原创 2015-12-13 04:27:09 · 222 阅读 · 0 评论 -
Combination Sum总结
关于组合的题目我们一般用回溯法来解决。我的理解回溯法就是按照要求一直找下去,如果找到一个结果就把这个结果记录下来,然后返回上一层,如果有其它路线可以走就继续尝试,如果没有,就继续返回上一层。回溯的实现一般用递归来完成。这里介绍一下关于组合的问题,以及它的一些延伸。[b]1,Combination[/b]给定两个正整数n和k,返回所有长度为k的组合,组合中的元素为1...n。例如:n...原创 2015-12-13 06:31:33 · 155 阅读 · 0 评论 -
Permutation总结
有关排列的问题我们可以与组合比较来考虑,解决这类问题我们都采用回溯法,在组合中不用考虑顺序,而在排列中就要考虑顺序,例如(1,2,3)和(2,1,3),在组合的概念中是相等的,但它们是不同的排列。下面列举leetcode中有关permutations的几道题目。[b]1,Permutation[/b]给定一个数组numbers ,输出所有可能的排列。例如:numbers = {1,...原创 2015-12-13 18:05:05 · 1028 阅读 · 0 评论 -
Remove Duplicate from Array(数组去重)
给定一个数组,判断是否存在重复元素,或者让你找出重复的元素。遇到这类问题我们应该先想用哈希表,位运算,双指针是否可以解决,根据具体的情况选择合适的方法。下面是leetcode中有关数组去重或查重的几道题目。1,Contains Duplicate给定一个数组,判断里面是否存在重复元素,如果存在就返回true,如果不存在就返回false.既然是判断是否存在重复元素,我们首先想到哈...原创 2015-12-14 05:24:31 · 470 阅读 · 0 评论 -
Remove Duplicate from List(链表去重)
之前在[url=http://kickcode.iteye.com/blog/2263414]一篇文章里[/url]总结了一部分链表的题目,这里主要例举一下链表去重的问题。链表去重有很多种情况,有些要求我们只保留单独出现的元素,有些要求我们使重复的元素只能出现一次。对于可能会删除头结点的题目,我们一般采用新建一个helper节点,使helper指向head,进行操作,最后返回helper.next...原创 2015-12-14 13:15:35 · 314 阅读 · 0 评论 -
Palindrome总结
这篇文章总结leetcode中回文的题目,其中关于palindrome partition有两道题目,第二道属于动态规划的题目,我们动态规划的总结中讨论。简单的讲回文就是将它翻转后和原来一样。[b]1,Palindrome Number[/b]给定一个数字,判断它是否为回文数。对于数字来讲,负数不属于回文数,对于正数,我们将它逆转,然后与原始值比较,如果相等就为回文数。代码如下...原创 2015-12-15 05:44:09 · 138 阅读 · 0 评论 -
Parentheses总结
这篇文章总结leetcode中有关括号的问题,最简单的是判断输入的括号是否有效,例如“))”就不属于有效的括号,括号的题目无非是添加,删除,找到最长有效括号等。最长有效括号是一道DP问题,我们在DP总结中结合最长回文子串一起列出。下面列举几个基本的题目。[b]1,Valid Parentheses[/b]给定一个字符串序列,它包含'(', ')', '{', '}', '[' , ']...原创 2015-12-15 09:21:42 · 168 阅读 · 0 评论 -
Bit Manipulation总结(一)
在[url=http://kickcode.iteye.com/blog/2260251]位运算这篇文章中[/url]已经介绍了关于位运算的一些知识,这里主要介绍leetcode中出现的有关位运算的题目。有关找单独元素的有三道题,要求空间复杂度为O(n),空间复杂度为O(1),我们都可以通过位运算来解决。[b]1,Single Number[/b]给定一个数组,每个元素都出现了两次...原创 2015-12-15 16:50:45 · 187 阅读 · 0 评论 -
Bit Manipulation总结(二)
这篇文章介绍通过位运算求解子集,反转二进制数,判断是否为2的幂等。[b]1,Number of 1 Bits[/b]给定一个无符号的整数,输出它包含1的个数。通过右移,依次与1位与,得到1的个数。 代码如下:[code="java"]public class Solution { // you need to treat n as an unsigned va...原创 2015-12-15 17:12:34 · 86 阅读 · 0 评论 -
Binary Tree的题目总结(一)
与数组和链表相比,树的题目比它们要难一些,我们往往通过递归来处理树的题目,下面是对leetcode有关树操作的几道题目,包括找出树的所有路径,计算完全二叉树节点个数,二叉搜索树的最近公共祖先,普通二叉树的最近公共祖先。[b]1,Binary Tree Paths[/b]给定一个二叉树,输出所有根节点到叶子节点的路径。用深度优先遍历(DFS),依次保留搜索过的节点。代码如下:...原创 2015-12-16 03:40:57 · 127 阅读 · 0 评论 -
Binary Tree的题目总结(二)
这篇文章列出了leetcode中有关二叉树遍历的题目,之前在[url=http://kickcode.iteye.com/blog/2261080]二叉树的深搜和广搜[/url]中介绍过,这里再重复一下,因为这都是最基本的操作,需要我们熟练掌握。[b]1,Binary Tree Level Order Traversal[/b]二叉树的广度优先搜索,输出所有节点的值,说的广搜,我们一律...原创 2015-12-16 04:59:26 · 80 阅读 · 0 评论 -
Binary Tree的题目总结(三)
这篇文章主要列举数组或者链表如何转换为二叉树。[b]1,Convert Sorted Array to Binary Search Tree[/b]将一个有序数组变为二叉平衡树。因为数组有序,我们通过二分法,依次将数组元素变为数节点,代码如下:[code="java"]/** * Definition for a binary tree node. * publ...原创 2015-12-16 08:15:07 · 80 阅读 · 0 评论 -
Binary Tree的题目总结(四)
本文列举leetcode中两个关于构造二叉树的题目。1,Construct Binary Tree from Inorder and Postorder Traversal已知中序遍历序列,和后序遍历序列,通过这两个序列构造二叉树。通过后序遍历序列的最后元素,我们总能找到根节点,然后通过这个值可以将中序序列分为两部分,然后在递归左右两部分。代码如下:[code="java"]...原创 2015-12-16 13:25:38 · 134 阅读 · 0 评论 -
Clone Graph
之所以把这道题单独拿出来,是因为通过它我们可以了解到图的结构,以及如何处理,我们分别用递归,广搜和深搜来完成这道题。[b]Clone Graph[/b]复制一个无向图,图中每个节点都有一个label和一个neighbors集合。解决图的题,因为图中存在环,我们要判断哪些点已经访问过了,做上标记,以防止进入死循环。这里我们用哈希函数来判断一个顶点是否被访问过,如果没被访问过就加入...原创 2015-12-17 09:25:58 · 75 阅读 · 0 评论 -
并查集总结
leetcode中有关并查集的题目不多,这里现列举一道简单的题目,理解并查集的思想。[b]Longest Consecutive Sequence[/b]给定一个未排序的整型数组,找出最长的连续子序列。要求时间复杂度为O(n)。例如:给定nums[] = {100, 4, 200, 1, 3, 2}输出:4 最长连续子序列为(1,2,3,4)我们用哈希处理元素是否...原创 2015-12-18 03:48:28 · 68 阅读 · 0 评论 -
Remove Duplicate from Unsorted List
之前介绍过在排好序的链表中删除节点,只需要遍历一遍链表,所以时间复杂度为O(n)。这篇文章讨论对无序链表的去重问题。给定一个无序链表,删除里面的重复元素,我们用bruce force来进行的话时间复杂度为O(n^2),我们从头节点开始判断,如果有相等的元素,就将当前节点的next指向下一个节点的next。每个元素都要遍历一次它们后面的元素。代码如下:[code="java"]pub...原创 2015-12-20 13:08:42 · 84 阅读 · 0 评论 -
动态规划总结(一)
动态规划在算法中属于难的问题了,在leetcode中属于中等偏上难度,但是动规是面试容易问到的,因此掌握基本的动规题目很有必要。下面列举leetcode中用DP处理的题目,其中有些用到贪心算法,就不单列出来了,本质上贪心也是动态规划的一个特例。动态规划重要的是能找出递推式,这需要我们多加练习,需要有一个过程。有关买卖股票的题目有几道,这里列举前两道题。[b]1,Best Time to...原创 2015-12-20 13:37:09 · 112 阅读 · 0 评论 -
动态规划总结(二)
这篇文章介绍unique path等一系列的题目,它们属于二维动态规划的问题,[url=http://kickcode.iteye.com/blog/2260196]之前一篇文章[/url]讲过最长公共子序列(LCS), 最长递增子序列(LIS), 最长非降子序列。有兴趣的可以看一下,这些都是经典的二维动规问题。[b]1,Unique Paths[/b]给定一个m*n的矩阵,一个机器人...原创 2015-12-21 02:32:57 · 150 阅读 · 0 评论 -
动态规划总结(三)
House Robber问题属于一维的动规问题,这篇文章给大家介绍一下。[b]1,House Robber[/b]一个小偷去一条街上偷东西,假设这条街上有n个房子,每个房子里都有特定的现金,但是小偷不能偷连续的房子,那样会触发警报,问怎样才能偷到最多的钱。我们把这条街抽象成一个数组,数组里的值代表了房子里现金的数目,假设小偷拿了第0个房子的钱,那么第1个房子的钱就不能拿,否则就...原创 2015-12-22 07:52:57 · 141 阅读 · 0 评论 -
Majority Element
[b]Majority Element[/b]给定一个长度为n的数组,从中找出出现次数最多的元素,这个元素出现的次数多余[n/2]次。假设数组不为空并且始终存在一个majority元素。解决这道题有很多种方法,但是时间复杂度和空间复杂度各不相同,在这里我们用三种不同的方法解这道题。1,最简单的方法就是先将数组排好序,根据题意我们知道,出现最多的元素肯定是中间的元素。我们直接...原创 2015-12-23 08:44:31 · 91 阅读 · 0 评论 -
Majority Element II
[b]Majority Element II[/b]给定一个长度为n的数组,找出所有出现次数大于[n/3]的元素。这道题是Majority Element的变形,如果次数大于[n/2]时,只可能有一个元素,这里要求出现次数多于[n/3]次,也就是说有可能有两个元素,同样我们可以用哈希表来做,这样时间复杂度为O(n),空间复杂度为O(n)。代码如下:[code="java"]pu...原创 2015-12-23 10:05:38 · 93 阅读 · 0 评论 -
Kth Largest Element in an Array
[b]Kth Largest Element in an Array[/b]给定一个无序的数组,找出第K大的元素,假定k一直有效,1 ≤ k ≤ array's length。例如给定:nuts[] = [3,2,1,5,6,4], k = 2返回 5如果我们用Arrays的sort方法将数组排序,然后输出nums[nums.length - k]就是第k大的元素。代码如下...原创 2015-12-23 10:33:27 · 119 阅读 · 0 评论 -
Wildcard Matching
[b]Wildcard Matching[/b]给定两个字符串p和q,判断两个字符串是否匹配。规则是:‘*’可以代表任意长度的字符串,也可以代表空串;‘?’代表任意单个的字符串。例如:isMatch("aa", "a") → falseisMatch("aa", "aa") → trueisMatch("aaa", "aa") → falseisMatch(&quo原创 2015-12-24 01:36:18 · 89 阅读 · 0 评论 -
Gray Code
首先简单介绍一下什么是格雷码。在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。有关格雷码的详细讲解请大家查阅网上其它资料,这里主要讲解格雷码是如何编码的。我们不妨从简单例子开始进一步看一下什么是格雷码,假设n代表格雷码的位数,当n=1时,我们只有两种选择...原创 2015-12-24 02:11:12 · 108 阅读 · 0 评论 -
Sliding Window Maximum
[b]Sliding Window Maximum[/b]Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window....原创 2015-12-25 05:15:21 · 113 阅读 · 0 评论 -
二叉树BFS变形题目总结
二叉树广度优先遍历我们采用队列来实现,这里列举三道leetcode中有关二叉树BFS的题目,总的思想是一样的,题目要求的输出不同,我们需要根据不同的要求来编写,考察我们对于二叉树搜索的基本思想掌握以及java基础的掌握。[b]1,Binary Tree Level Order Traversal[/b]给定一颗二叉树,用广度优先搜索遍历所有节点,并输出结果。例如: 3...原创 2016-01-06 11:54:23 · 227 阅读 · 0 评论 -
Pow(n, x)题目总结
有关计算一个数幂的题目考查我们对于边界问题的处理,比如如何处理负数越界问题,以及如何通过位运算提高运算速度。这里列举leetcode中有关pow()方法的两道题目。[b]1,Power of Two[/b]给定一个整数,判断这个数是否是2的幕。这道题目比较简单,我们通过位与运算就可以解决,有关位运算的知识大家可以参考[url=http://kickcode.iteye.com/...原创 2016-01-06 12:17:17 · 260 阅读 · 0 评论 -
Unique Binary Search Trees 总结
有关unique 二叉搜索树的题目有两个,第一道题目是确定二叉搜索树的个数,第二道题目是输出所有的二叉搜索树,这两道题目属于比较难的题目,对于解决它们的方法也是比较重要的,我们要掌握。[b]1,Unique Binary Search Trees[/b]给定一个正整数n,确定有多少个不同的二叉搜索树,树的节点取值范围为(1....n)。例如:给定n = 3,输出为5 1 ...原创 2016-01-08 15:22:48 · 109 阅读 · 0 评论 -
Number of Islands
[b]Number of Islands[/b]Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or ...原创 2016-01-08 15:34:51 · 121 阅读 · 0 评论 -
Anagram总结
有关异构词的题目,考察我们对字符串的处理能力,这里列举leetcode两道关于异构词的题目。[b]1,Valid Anagram[/b]Given two strings s and t, write a function to determine if t is an anagram of s.For example,s = "anagram", t = "nagaram",...原创 2016-01-08 16:09:54 · 295 阅读 · 0 评论 -
Coin Change
[b]Coin Change[/b]You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If t...原创 2016-01-10 06:03:30 · 242 阅读 · 0 评论 -
Range Sum Query - Immutable
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) -> 1sumRange(2, 5) -> -1sumR...原创 2016-01-22 09:51:23 · 76 阅读 · 0 评论 -
Range Sum Query - Mutable
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.The update(i, val) function modifies nums by updating the element at index i to val.Example:...原创 2016-01-22 10:36:02 · 111 阅读 · 0 评论 -
Range Sum Query 2D - Immutable
Given a 2D matrix matrix[][], find the sum of the elements inside the rectangle defined by its upper left corner (row1, col1) and lower right corner (row2, col2).Example:Given matrix = [ [3, 0,...原创 2016-01-22 15:56:08 · 69 阅读 · 0 评论 -
Course Schedule
There are a total of n courses you have to take, labeled from 0 to n - 1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a ...原创 2016-01-23 01:44:00 · 142 阅读 · 0 评论 -
Course Schedule II
There are a total of n courses you have to take, labeled from 0 to n - 1.Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a ...2016-01-23 01:54:13 · 86 阅读 · 0 评论 -
Implement Trie (Prefix Tree)
Implement a trie with insert, search, and startsWith methods.Note:You may assume that all inputs are consist of lowercase letters a-z.题目的要求很简单,完成一个前缀树的插入,搜索等功能。Trie为前缀树,又称字典树或单词查找树,是一种用于...2016-01-23 02:36:36 · 72 阅读 · 0 评论 -
Add and Search Word - Data structure design
Design a data structure that supports the following two operations:void addWord(word)bool search(word)search(word) can search a literal word or a regular expression string containing only lett...2016-01-23 03:20:28 · 80 阅读 · 0 评论 -
Add Two Numbers
You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a link...原创 2016-01-24 07:33:33 · 117 阅读 · 0 评论 -
Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For ...2016-01-24 07:47:09 · 105 阅读 · 0 评论