每日一刷 2018/8/27
推荐教材:https://facert.gitbooks.io/python-data-structure-cn/
day 1
二维数组中的查找
1 |
|
1 |
|
替换空格
1 |
|
1 |
|
从尾到头打印链表
1 |
|
1 |
|
似冒泡排序
1 |
|
day 2
斐波那契数列
1 |
|
1 |
|
1 |
|
快速排序
1 |
|
1 |
|
最小的K个数
1 |
|
1 |
|
1 |
|
数组中出现次数超过一半的数字
1 |
|
1 |
|
day 3
二进制中1的个数
1 |
|
调整数组顺序使奇数位于偶数前面
1 |
|
1 |
|
数值的整数次方
1 |
|
1 |
|
1 |
|
day 4
归并排序
1 |
|
数组中的逆序对
1 |
|
解法二 用merge sort的思想,归并过程中添加一个count(时间复杂度O(nlogn)):
1 |
|
第一个只出现一次的字符
1 |
|
字符流中第一个不重复的字符
1 |
|
和为S的两个数字
1 |
|
表示数值的字符串
1 |
|
数据流中的中位数
1 |
|
day 5
把数组排成最小的数
1 |
|
数组中重复的数字
1 |
|
把字符串转换成整数
1 |
|
1 |
|
不用加减乘除算加法
1 |
|
day 6
丑数
思路:最直接的暴力解法是从1开始依次判断数字是否为丑数,直到达到要求的丑数个数。当然这种方法肯定是会TLE的,所以我们分析一下丑数的生成特点(这里把1排除):
因为丑数只包含质因子2,3,5,假设我们已经有n-1个丑数,按照顺序排列,且第n-1的丑数为M。那么第n个丑数一定是由这n-1个丑数分别乘以2,3,5,得到的所有大于M的结果中,最小的那个数。
事实上我们不需要每次都计算前面所有丑数乘以2,3,5的结果,然后再比较大小。因为在已存在的丑数中,一定存在某个数T2,在它之前的所有数乘以2都小于已有丑数,而T2×2的结果一定大于M,同理,也存在这样的数T3,T5,我们只需要标记这三个数即可。
1 |
|
求1+2+3+…+n
1 |
|
1 |
|
滑动窗口的最大值
1 |
|
day 7
##