1.判断单链表是否有环?
快慢指针实现
2.从N个数中找出第K大的数?
(1)可以先排序,然后在选K,那么也就是冒泡 选择排序的写法;
(2)也可以用PriorityQueue
方法名 | 功能描述 |
---|---|
add(E e) | 添加元素 |
clear() | 清空 |
contains(Object o) | 检查是否包含当前参数元素 |
offer(E e) | 添加元素 |
peek() | 读取元素,(不删除) |
poll() | 取出元素,(删除) |
remove(Object o) | 删除指定元素 |
size() | 返回长度 |
实现小顶堆,最小堆,是一种经过排序的完全二叉树,其中任一非终端节点的数据值均不大于其左子节点和右子节点的值。
然后每次poll的都是最大值
方法2:适合海量数据的o(nlogk)的方法
借助外部数据结构(最小堆),也可以不借助外部的数据结构,手动实现一个最小堆https://blog.csdn.net/orangefly0214/article/details/84997668
这种实现方法也不错
方法3:基于快速排序的方法,时间复杂度为o(n)
方法4:先利用各种排序方法排序,再截取第k大的数 时间复杂度o(nlogn+k)
3.反转链表?