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

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

分析:这是个排序题,只要排好序,一切迎刃而解。我决定把排序算法多试几个,把答案都写下来。(从小到大排序)

1.冒泡排序:
两两比较,如果前面的较小就交换顺序

class Solution {public int findKthLargest(int[] nums, int k) {for(int i = 0;i<nums.length;i++){for(int j = 0;j < nums.length-i-1;j++){//第i次后最后面(i+1)个元素已经排好了,只需要在遍历num.s-(i+1)次if(nums[j]>nums[j+1]){//相邻元素比较int temp = nums[j];nums[j] = nums[j+1];nums[j+1] = temp;}}}return nums[nums.length-k];}
}

时间复杂度是O(n^2)

2.选择排序
每趟从剩下的nums.length-i中选择最小的插入到第i+1个位置

class Solution {public int findKthLargest(int[] nums, int k) {for(int i = 0;i<nums.length;i++){int p = i;//p一直会寻找最小的元素下标for(int j = i+1;j<nums.length;j++){if(nums[j]<nums[p]){p = j;}}if(p == i){//也可以直接交换continue;}else{int temp = nums[i];nums[i] = nums[p];nums[p] = temp;}}return nums[nums.length-k];}
}

时间复杂度O(n^2)

3.插入算法
插入排序是把一个记录插入到已排序的有序序列中,使整个序列在插入该记录后仍然有序。插入排序中较简单的一种方法是直接插入排序,其插入位置的确定方法是将待插入的记录与有序区中的各记录自右向左依次比较其关键字值的大小。

class Solution {public int findKthLargest(int[] nums, int k) {int j = 0;for(int i = 1;i<nums.length;i++){//从第二个数据开始,一个数据没有可比性int temp = nums[i];//取出要插入的数据j = i-1;//确定要比较元素的最右边位置while(j>=0&&temp<nums[j]){nums[j+1] = nums[j];//数据右移j--;//移向左边一个未比较的数}nums[j+1] = temp;//在确定的位置插入nums[i]}return nums[nums.length-k];}
}

时间复杂度O(n^2)

力扣 数组中的第K个最大元素相关推荐

  1. 力扣(LeetCode)215. 数组中的第K个最大元素(C语言)

    一.环境说明 本文是 LeetCode 215题 : 数组中的第K个最大元素,使用c语言实现. 快速选择.查找无序数组的利器! 测试环境:Visual Studio 2019. 二.代码展示 void ...

  2. 力扣 数组中的最长山脉

    力扣 数组中的最长山脉 题目描述 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 "山脉": B.length >= 3 存在 0 < i < B.le ...

  3. LeetCode——215,数组中的第K个最大元素(分治法)

    尹成老师带你学算法 /*** \* Created: liuhuichao* \* Date: 2020/1/27* \* Time: 11:32 上午* \* Description: 数组中的第K ...

  4. 在数组中查找第k个最大元素_查找数组中每个元素的最近最大邻居

    在数组中查找第k个最大元素 Problem statement: 问题陈述: Given an array of elements, find the nearest (on the right) g ...

  5. 215.数组中的第K个最大元素/347. 前 K 个高频元素

    2020-05-25 1.题目描述 数组中的第K个最大元素 2.题解 1.使用冒泡排序 2.使用快速排序 3.优先队列(内部是用堆来实现的) 3.代码 class Solution { public: ...

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

    数组中的第K个最大元素 在未排序的数组中找到第k个最大的元素.请注意,你需要找的是数组排序后的第k个最大的元素,而不是第k个不同的元素. 示例 输入: [3,2,1,5,6,4] 和 k = 2 输出 ...

  7. 【LeetCode】【HOT】215. 数组中的第K个最大元素(优先队列)

    [LeetCode][HOT]215. 数组中的第K个最大元素 文章目录 [LeetCode][HOT]215. 数组中的第K个最大元素 package hot;import java.util.Co ...

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

    215. 数组中的第 K个最大元素 在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数 组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5 ...

  9. ⭐算法入门⭐《哈希表》中等05 —— LeetCode 215. 数组中的第K个最大元素

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   给定整数数组nums和 ...

最新文章

  1. POJ - 1961 最小循环节
  2. Python实现快速排序(非递归实现)
  3. 如何简单快速调试高大上的谷歌浏览器
  4. java中Object和Objects类、toString方法和equals方法介绍
  5. 决定成败的人生细节(转)
  6. LeetCode 40. 组合总和 II(回溯)
  7. Dart基础第4篇:运算符、条件判断、类型转换
  8. 汇编原理6:opcode
  9. Tera Term使用说明
  10. mysql蠕虫复制原理_mysql蠕虫复制基础知识点
  11. Chrome打不开baidu首页的问题
  12. 腾讯校招java面经_腾讯校招技术岗面试经历及总结(笔试-一面-二面-终面均通过)...
  13. 物联网智能家居与射频识别技术应用
  14. Service Mesh-Conduit概览
  15. aspose获取文件纸张方向以及设置纸张方向
  16. 磁条卡,IC卡,ID卡,信用卡芯片卡,信用卡磁条卡 等等的区别
  17. 凸优化:ADMM(Alternating Direction Method of Multipliers)交替方向乘子算法
  18. 在Excel中用VB批量生成二维码
  19. 【数据结构】用堆排序解决TOPK问题
  20. 苹果6外音没有了怎么办_时尚高颜简约风,苹果蓝牙耳机AirPods2保护套精选

热门文章

  1. centos重置系统_双系统下Linux系统无法启动及其引导丢失之解决
  2. com/mysql/jdbc/sqlerror_com.mysql.jdbc.sqlerror
  3. 小程序在wxml页面中取整
  4. jquery简介 each遍历 prop attr
  5. 替换富文本里的px为rem
  6. 打印发现function toUpperCase() { [native code] }
  7. css未知尺寸的图片的水平和垂直居中
  8. xshell常用的命令
  9. @Transcational特性
  10. Java属性中指定Json的属性名称(序列化和反序列化)