算法

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.反转链表?

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值