排序
排序算法实现
实现归并排序、快速排序、插入排序、冒泡排序、选择排序、堆排序
代码见排序算法总结
编程实现 O(n) 时间复杂度内找到一组数据的第 K 大元素
1 |
|
leetcode-239-返回滑动窗口中的最大值
涉及队列
1 | class Solution(object): |
二分查找
实现一个有序数组的二分查找算法
需注意边界,参考:二分查找学习札记 (写的很详细)
代码如下
1 | # coding: utf-8 |
实现模糊二分查找算法(比如大于等于给定值的第一个元素)
代码如下
1 | def binary_search(sort_list, target): |
二分查找变种
模式
如下:
1 | def binary_search(sort_list, target): |
确定return
因为最后跳出while (left <= right)
循环条件是right < left,且right = left - 1
。最后right和left一定是卡在”边界值”的左右两边,如果是比较值为key,查找大于等于(或者是大于)key的元素,则边界值就是等于key的所有元素的最右边那个,其实应该返回left
确定比较符号
查找大于等于key的元素,则知道应该使用判断符号<
参考
对应的 LeetCode 练习题
leetcode-69-Sqrt(x) (x 的平方根)
英文版:https://leetcode.com/problems/sqrtx/
中文版:https://leetcode-cn.com/problems/sqrtx/
方法一
1 | # coding: utf-8 |
方法二
这种写法更简洁,参考:3-4 short lines, Integer Newton, Every Language
1 | class Solution(object): |