js 判断数组第二大的数

这是一篇关于JavaScript算法的博客,主要讨论如何在面试中解决找出数组中第二大的数的问题,这个问题在LeetCode中对应题号215,即寻找数组中的第K个最大元素。
摘要由CSDN通过智能技术生成

在2022年二月份有很多前端的朋友面试大厂会问到了js 判断数组第二大的数的题(其实就是一道算法题,在力扣题号为:215,题目为:数组中的第K个最大元素

<script type="text/javascript">
//访问网址:https://xuexiluxian.cn/
var findKthLargest = function(nums, k) {
    let arr = new MinHeap();
    nums.forEach(item=>{
        arr.insert( item );
        if( arr.size() > k ){
            arr.pop();
        }
    })
    return arr.peek();
};
findKthLargest([3,2,1,5,6,4],2);

class MinHeap{
	constructor(){
		this.heap = [];
	}
	//换位置
	swap(i1,i2){
		const temp = this.heap[i1];
		this.heap[i1] = this.heap[i2];
		this.heap[i2] = temp;
	}
	//找到父节点
	getParentIndex( index ){
		return Math.floor( (index-1)/2  );
	}
	//上(前)移操作
	up( index ){
		//如果是0就不移动了
		if( index ==0 )return;
		const parentIndex = this.getParentIndex( index );
		//如果父元素大于当前元素,就开始移动
		if( this.heap[parentIndex] > this.heap[index] ){
			this.swap(  parentIndex  ,  index );
			this.up( 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值