总结之数组

1.Remove Duplicates from Sorted Array

http://blog.csdn.net/chencheng126/article/details/38821083


2.Search in Rotated Sorted Array

二分查找的进阶,不错的题。在二分查找前,先要确定一下哪一部分是有序数组。

http://blog.csdn.net/chencheng126/article/details/38822681


3.Median of Two Sorted Arrays

用到了二分查找,还有递归。

这是一个好题目,可以一般化为求两个有序数组中,第K大的元素。

实现的方法有很多种,大多数是O(m+n),但题目要求的是O(long(m+n)),这就是要求用到二分查找。实现中,我们还用到了递归。

http://blog.csdn.net/chencheng126/article/details/38823029


4.Longest Consecutive Sequence

如果是先排序,那么时间复杂度是O(nlogn)。要想O(n),需要用到hash,记录每个元素是否使用过。对每个元素,以该元素为中心,左右扩张,直到不连续,记录最大的长度。

http://blog.csdn.net/chencheng126/article/details/38843489


5.Two sum/Three sum/Four sum.....

这是一个系列,在一个整型数组中找出几个数的和等于一个目标数。

对于tow sum,可以采用hash的办法,时间复杂度是O(n)

对于其它k-sum,可以采用先排序,然后左右夹逼的办法。时间复杂度是O(n^k-1)

http://blog.csdn.net/chencheng126/article/details/38849573


6.Next Permutation

下一个排列。有一个固定的思路,详见链接。要注意细节。

http://blog.csdn.net/chencheng126/article/details/38900165


7.Valid Sudoku

考虑行,列,每个子方格。用一个9位的bool数组,表示是否used。

http://blog.csdn.net/chencheng126/article/details/38900535


8.Trapping Rain Water

http://blog.csdn.net/chencheng126/article/details/38926513


9.Rotate Image

先按照对角线翻一次,然后按照水平中线再翻转一次。

http://blog.csdn.net/chencheng126/article/details/38927927


10.Climbing Stairs

f(n)表示爬到n层楼梯的方法。f(n) = f(n-1)+f(n-2)。用迭代的方式实现。

http://blog.csdn.net/chencheng126/article/details/38927997


11.Gas station

我觉得一道很简短精巧的题。

http://blog.csdn.net/chencheng126/article/details/38979473


12.Candy

很有趣的一道题。解题思路清楚,化繁为简。

http://blog.csdn.net/chencheng126/article/details/38979979


13.Single Number

用异或。

http://blog.csdn.net/chencheng126/article/details/38980049


14.Merge sorted array

从数组末尾往前操作,可以省去很多操作

http://blog.csdn.net/chencheng126/article/details/39293825





你可能感兴趣的:(总结之数组)