LeetCode刷题:排序和二分查找
本文最后更新于:5 个月前
关于排序和二分查找的几个必知必会的代码实现
排序
实现归并排序、快速排序、插入排序、冒泡排序、选择排序
编程实现 $O(n)$ 时间复杂度内找到一组数据的第
K
大元素
二分查找
实现一个有序数组的二分查找算法
实现模糊二分查找算法(比如大于等于给定值的第一个元素)
排序题目
Relative Sort Array(数组的相对排序)
题目:
给你两个数组,
arr1
和arr2
,
arr2
中的元素各不相同arr2
中的每个元素都出现在arr1
中
对arr1
中的元素进行排序,使arr1
中项的相对顺序和arr2
中的相对顺序相同。未在arr2
中出现过的元素需要按照升序放在arr1
的末尾。示例:
输入:
arr1 = [2,3,1,3,2,4,6,7,9,2,19]
,arr2 = [2,1,4,3,9,6]
输出:[2,2,2,1,4,3,3,9,6,7,19]
提示:
arr1.length
,arr2.length <= 1000
0 <= arr1[i]
,arr2[i] <= 1000
arr2
中的元素arr2[i]
各不相同arr2
中的每个元素arr2[i]
都出现在arr1
中
思路:
先对
arr1
进行排序,然后按照arr2
的顺序放置arr1
的元素,最后剩下的元素放在末尾即可。
代码:
1 |
|
二分查找题目
Sqrt(x) (x 的平方根)
题目:
实现
int sqrt(int x)
函数。计算并返回
x
的平方根,其中x
是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。
示例 1:
输入:
4
输出:2
示例 2:
输入:
8
输出:2
说明:8
的平方根是2.82842...
, 由于返回类型是整数,小数部分将被舍去。
思路:
这里提供了两种方法,分别是二分法和牛顿法,点击查看
二分查找法应用于搜索平方根的思想很简单,其实就是“猜”,但是是有策略的“猜”,用“排除法”在有限的区间里,一次排除一半的区间元素,最后只剩下一个数,这个数就是题目要求的向下取整的平方根整数。牛顿法最初提出的时候,是用于求解方程的根,它的基本思想是“以直代曲”,在迭代中搜索得到方程的近似解。
代码:
1 |
|
LeetCode刷题:排序和二分查找
https://muchen.fun/passages/leetcode-sort-binary-search/