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

cpp 复制代码
class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        int i=0;
        int j=nums.size()-1;
        k=k-1;
        while(i<=j){
            int p=partition(i,j,nums);
            if(p==k)
                return nums[p];
            else if(p<k){
                i=p+1;
                while(i<k && nums[i]==nums[i-1])
                    i++;
            }
            else{
                j=p-1;
                while(j>k && nums[j]==nums[j+1])
                    j--;
            }

        }
        return -1;
    }
    int partition(int i,int j,vector<int>& nums){

        int left=i+1;
        int right=j;
        int tmp=nums[i];
        while(left<=right){
            while(nums[left]>=tmp && left<j){
                left+=1;
            }
            while(nums[right]<=tmp && right>i){
                right-=1;
            }
            if (left>=right)
                break;
            swap(nums[left], nums[right]);
            // if(left<right){
            //     swap(nums[left], nums[right]);
            // }

        }
        // nums[i]=nums[right];
        // nums[right]=tmp;
        swap(nums[i], nums[right]);
        return right;

    }
};

Focus:

1 while(i<=j) 里的"="要有。最后是i,j移动

2 while(left<=right) 里的"="要有。 i>j是可以存在的。等于之后,移动right,找到和tmp替换的位置

这道题真的让我清楚的明白了partition我有哪些漏的...

相关推荐
violet-lz25 分钟前
数据结构四大简单排序算法详解:直接插入排序、选择排序、基数排序和冒泡排序
数据结构·算法·排序算法
·白小白30 分钟前
力扣(LeetCode) ——118.杨辉三角(C++)
c++·算法·leetcode
CoovallyAIHub1 小时前
超越“识别”:下一代机器视觉如何破解具身智能落地难题?
深度学习·算法·计算机视觉
仰泳的熊猫1 小时前
LeetCode:207. 课程表
数据结构·c++·算法·leetcode
liu****1 小时前
19.map和set的封装
开发语言·数据结构·c++·算法
水冗水孚1 小时前
双指针算法在实际开发中的具体应用之代码Review文章字符串的片段分割
算法·leetcode
DuHz1 小时前
用于汽车雷达应用的步进频率PMCW波形——论文阅读
论文阅读·算法·汽车·信息与通信·信号处理·毫米波雷达
张晓~183399481211 小时前
碰一碰发抖音源码技术搭建部署方案
线性代数·算法·microsoft·矩阵·html5
weixin_448119941 小时前
Datawhale人工智能的数学基础 202510第3次作业
人工智能·算法
CoovallyAIHub2 小时前
全球OCR新标杆!百度0.9B小模型斩获四项SOTA,读懂复杂文档像人一样自然
深度学习·算法·计算机视觉