今天在家困了一不小心睡多了结果晚上睡不着。
一、最长不重复子串
题目:找到一个没有重复字符的子串。
题解:遍历每个字符起始的子串。
大概就是一个数组loc[256]记录最新的字符开始位置,然后一个数组max[256]存最长的子串,复杂度就是O(n+256)
二、N个数字找第k大
题解:1、选择排序:遍历一遍找第一大,遍历一遍找第二大……O(nk)
2、快速排序:找一个基准,划分成比它小的一堆,比它大的另一堆~全部排完……O(n log2 n)
3、找出k个数,建立一个小根堆。如果有新的数比堆顶小,抛弃。比堆顶大就换掉,然后更新堆。O(nlog2k)