前端算法专栏-数组-215. 数组中的第K个最大元素

简介: 前端算法专栏-数组-215. 数组中的第K个最大元素

介绍

Hi 大家好。我是程序员库里,今天新开一个前端算法专栏。


接下来会分类给大家分享常考算法题目。


很多朋友也是看着这套系列算法拿到很多offer!所以也是想分享给更多朋友,帮助到有需要的朋友。


image.png


分类

数组-三路快排


题目

215. 数组中的第K个最大元素

给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。

请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。

你必须设计并实现时间复杂度为 O(n) 的算法解决此问题。

 

示例 1:

输入:[3,2,1,5,6,4], k = 2

输出: 5


示例 2:

输入:[3,2,3,1,2,4,5,5,6], k = 4

输出: 4



解释

  1. 首先定义一个变量len表示数组的长度,在外层遍历 k 次。
  2. 定义变量max,初始值是数组的第一项,表示默认当前第一个值最大
  3. 定义变量index,初始值0,表示当前数组中最大值的索引
  4. 在内循环从第2个值开始遍历,比较max的值和当前遍历的值
  5. 如果max小于当前遍历的值,就把当前的值赋值给max,同时将当前值的索引赋值给index
  6. 遍历完第一次后,max表示当前最大的元素,然后把当前最大的值从数组中删除
  7. 继续从外层循环遍历,重复上述操作
  8. 遍历k次后,将当前第k大值赋值给max,最后返回max


代码

/** * @param {number[]} nums * @param {number} k * @return {number} */varfindKthLargest=function(nums, k) {
varlen=nums.length;
for(vari=0;i<k;i++){
varmax=nums[0];
varindex=0;
for(varj=1;j<=len-1;j++){
if(max<nums[j]){
max=nums[j]
index=j            }
        }
nums.splice(index,1)
    }
returnmax;
};
相关文章
|
2天前
|
算法 测试技术 C语言
leecode算法题之数组
leecode算法题之数组
|
14天前
|
算法 Java C语言
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-49 算法训练 寻找数组中最大值
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-49 算法训练 寻找数组中最大值
18 0
|
19天前
|
机器学习/深度学习 算法 C语言
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
【编码狂想】深度探索C++编程之旅:“数组、字符串、函数与KMP算法解密“
62 0
|
29天前
|
算法 测试技术 C#
【动态规划】【数学】【C++算法】805 数组的均值分割
【动态规划】【数学】【C++算法】805 数组的均值分割
|
29天前
|
算法 测试技术 C#
【动态规划】【滑动窗口】【C++算法】 629K 个逆序对数组
【动态规划】【滑动窗口】【C++算法】 629K 个逆序对数组
|
29天前
|
算法 测试技术 C#
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
【KMP】【二分查找】【C++算法】100207. 找出数组中的美丽下标 II
|
29天前
|
算法 测试技术 C#
【滑动窗口】【差分数组】C++算法:K 连续位的最小翻转次数
【滑动窗口】【差分数组】C++算法:K 连续位的最小翻转次数
|
29天前
|
算法 测试技术 C#
【滑动窗口】【二分查找】C++算法:和至少为 K 的最短子数组
【滑动窗口】【二分查找】C++算法:和至少为 K 的最短子数组
|
1月前
|
存储 算法
算法题解-除自身以外数组的乘积
算法题解-除自身以外数组的乘积
|
1月前
|
存储 算法
算法题解-二叉搜索树中第K小的元素
算法题解-二叉搜索树中第K小的元素

相关产品