`

LeetCode 215 - Kth Largest Element in an Array

 
阅读更多

Find the kth largest element in an unsorted array.

For example,
Given [3,2,1,5,6,4] and k = 2, return 5.

Note: 
You may assume k is always valid, 1 ≤ k ≤ array's length.

public int findKthLargest(int[] nums, int k) {
    return findKthLargest(nums, 0, nums.length-1, k-1);
}

private int findKthLargest(int[] nums, int l, int h, int k) {
    if(k<l || k>h) return -1;
    int p = partition(nums, l, h);
    if(p == k) {
        return nums[p];
    } else if(p > k) {
        return findKthLargest(nums, l, p-1, k);
    } else {
        return findKthLargest(nums, p+1, h, k);
    }
}

private int partition(int[] nums, int l, int h) {
    int pivot = nums[h];
    int p = l;
    for(int i=l; i<h; i++) {
        if(nums[i]>pivot) {
            swap(nums, i, p++);
        }
    }
    swap(nums, p, h);
    return p;
}

private void swap(int[] nums, int i, int j) {
    int tmp = nums[i];
    nums[i] = nums[j];
    nums[j] = tmp;
}

 

分享到:
评论

相关推荐

    java-leetcode题解之215-Kth-Largest-Element-in-an-Array

    java入门 java_leetcode题解之215_Kth_Largest_Element_in_an_Array

    python-leetcode题解之215-Kth-Largest-Element-in-an-Array.py

    python python_leetcode题解之215_Kth_Largest_Element_in_an_Array.py

    lrucacheleetcode-leetcode:leetcode

    lru缓存leetcode 力码 大批 152-最大乘积子阵列,169-多数元素,189-...215-Kth Largest element in an Array(Heap Sort), HARD: 218-The Skyline Problem(Mergesort) ) 动态规划 HARD: 174-Dungeon Game, HARD: 188

    leetcode中国-effective-learning:有效学习

    https://leetcode-cn.com/problems/kth-largest-element-in-an-array/ Effective Learning 快速学习法:一年搞定MIT计算机课程 斯考特的FAQ页面 计划 表头 1 2 3 4 运动 健身 刷脂 篮球 羽毛球 游泳、跑步 拳击 学习...

    leetcode中国-Final450_Data-Structures:Final450_数据结构

    leetcode中国Final450_数据结构 实际上,这个存储库包含成为优秀竞争程序员最重要的数据结构和算法。 他们的名字是: Questions ----------- *Reverse the array *Find the maximum and minimum element in an array...

    leetcode中国-DP:DP

    leetcode中国大批 0. Count Prime 1. Reverse the array 2. Find the maximum and minimum element in an array 3. Find the "Kth" max and min element of an array 4. Given an array which consists of only 0, 1...

    Coding Interview In Java

    8 Kth Largest Element in an Array 35 9 Wildcard Matching 37 10 Regular Expression Matching in Java 39 11 Merge Intervals 43 12 Insert Interval 45 13 Two Sum 47 14 Two Sum II Input array is sorted 49 ...

    leetcode316-algorithm-code-csharp:C#算法题汇总

    7. LeetCode第703题:"Kth Largest Element in a Stream"(数据流中的第K大元素):设计一个数据结构,找到数据流中的第K个最大元素。 8. LeetCode第910题:"XOR Queries of a Subarray"(子数组异或查询):对于...

    leetcode分类-DataStructures:室内建筑的简单介绍和解释

    leetcode 分类数据结构 a brief introduction and explanation on interior architecture DataStructures 及其有趣的事实 1. TreeMap is created using RedBlack Tree 2. Autocomplete feature can be done through ...

    LeetCode最全代码

    421 | [Maximum XOR of Two Numbers in an Array](https://leetcode.com/problems/maximum-xor-of-two-numbers-in-an-array/) | [C++](./C++/maximum-xor-of-two-numbers-in-an-array.cpp) [Python](./Python/...

    算法刷题笔记leetcode/lintcode

    - Kth Largest Element(第k个最大元素) - First Position of Target(目标值首次出现的位置) - Search Insert Position(搜索插入位置) - Search for a Range(搜索范围) - First Bad Version(第一个错误...

    算法-leetcode-剑指offer上的题很多

    - **快速选择算法(Kth Largest Element)**: 选择一个无序数组中的第k大的元素。 #### 二分搜索扩展 - **二分搜索变体(First Position of Target)**: 在排序数组中寻找目标值的第一个位置。 - **查找插入位置(Search...

    javalruleetcode-reverie:找工作

    Array(方法1:堆 方法二:快速排序(推荐)) (面试题40:最小的k个数) LeetCode 347 Top K Frequent Elements(堆排序、桶排序) LintCode 532 Reverse Pairs(归并排序的应用)(面试题51:数组中的逆序对) ...

    机试高频考点.docx

    相关题目如《数组中第k个最大元素》(https://leetcode-cn.com/problems/kth-largest-element-in-an-array/)。 2. 排序问题:合并两个已排序的数组、将数字组成最大数等。例如《合并两个有序数组》...

    leetcode装最多水-Leetcode:解决了leetcode问题

    leetcode装最大水力码 解决了leetcode问题 1 . 2 . 3 . 4 . 5 . 6 . 它有 3 个解决方案,解释了 2 个解决方案,并且可以使用虚拟变量来解释第 3 个解决方案 7 . 8 . 9 . 必须解决树上的各种问题。 10 . 11 . 12 . ...

    python-leetcode面试题解之第215题数组中的第K个最大元素-题解.zip

    第215题是“数组中的第K个最大元素”(Find the Kth Largest Element in an Array),这是一个常见的数据结构与算法问题,考察了排序、堆和快速选择等算法知识。本题解将详细阐述如何用Python解决这个问题。 首先,...

    LeetCode判断字符串是否循环-lc:液晶显示器

    LeetCode判断字符串是否循环 LC 算法练习 LeetCode需要重点关注的题目 简单题型 中等难度题型 kth largest element in an array . use heap, use quick select. maximal square. Use dynamic programming. use just ...

    算法学习笔记

    - Kth Largest Element in an Array:在未排序的数组中找到第k大的元素。 - Binary Search:二分查找法。 - First Position of Target:在有序数组中找到目标值的第一个位置。 - Search Insert Position:在排序数组...

    leetcode

    例如,"Kth Largest Element in an Array"可以通过优先队列在O(n log k)的时间复杂度内找到答案。 五、Java特性的运用 Java的一些高级特性如泛型、枚举、接口、匿名内部类、Lambda表达式等也会在解题中发挥重要作用...

Global site tag (gtag.js) - Google Analytics