leetcode再次总结
注释 testcases
(1)简单一想O(n)算法,有可能通过二分查找变形优化成log(n)
(2)双指针:一快一慢 一静一动(数组中最小的长度满足条件,常常用于,确定了一个范围,然后一个指针静止,一个指针收缩) 一前一后
(3)二分查找可以一次性做完,也可以分两次来做,一次用于二分查找左边确定左边界,一次用于二分查找确定右边界。
(4)数字理解成二进制的方法,就是通过一个bitvector,简而言之一个32位的数组,循环每一位进行处理。
(5)Maximum Subarray 问题,用localMax 记录每一次局部最大值,全局的最大值是局部最大值的最大值。
(6)找一个数字[1,n]中满足某个条件的数字,也可以把数字看成一个数组,通过采用二分查找的方式解决。
(7)一个hashmap 不够就用两个,一个用于记录原始的key,value值,一个用于扫描式和原始的hashmap进行比对。
(8)对于数学规律题,一定要多写几个case观察规律,尤其是数组中的规律问题。
(9)在代码写完之时,一定一定一定不能急,要写好test case
(10)多用hashset hashmap 利用空间复杂度先解决问题为上策
(11)一旦涉及到两个数的关系( ret = (((dividend ^ divisor) >> 31) & 1) == 1 ? -ret: ret;),就要考虑到两个数是正负号问题,是否会溢出问题。
(12)stack的应用不一定要存value 也可以存index,存index的好处是 一方面可以通过index获取到value 另外一方面可以通过Index解决 最长 最短问题。
posted on 2018-03-17 11:28 zhouzhou0615 阅读(176) 评论(0) 编辑 收藏 举报