zoukankan      html  css  js  c++  java
  • leecode第二百一十五题(数组中的第K个最大元素)

    class Solution {
    public:
        int quick_sort_version(vector<int>& nums, int k,int begin,int end,int len)
        {
            if(end-begin<1)
                return nums[begin];//这里有点小意外,本来写的是nums[0],这是不对的,比如案例[1,2],k=1
            
            int res_beg=begin,res_end=end;//快排
            bool flag=true;
            while(res_beg!=res_end)
            {
                if(nums[res_beg]>nums[res_end])
                {
                    int temp=nums[res_beg];
                    nums[res_beg]=nums[res_end];
                    nums[res_end]=temp;
                    if(flag)
                        res_beg++;
                    else
                        res_end--;
                    flag=!flag;
                }
                else
                {
                    if(flag)
                        res_end--;
                    else
                        res_beg++;
                }
            }
            
            if(len-res_beg>k-1)//如果右面数比k-1多,就只在右面查找
                return quick_sort_version(nums,k,res_beg+1,end,len);
            else if(len-res_beg<k-1)//比k-1少,就只在桌面查找
                return quick_sort_version(nums,k,begin,res_beg,len);
            else//如果刚好相等,直接返回这个数值即可
                return nums[res_beg];
        }
        
        int findKthLargest(vector<int>& nums, int k) {
            int len=nums.size();
            return quick_sort_version(nums,k,0,len-1,len-1);//类似快排
        }
    };

    分析:

    知识迁移啊。

  • 相关阅读:
    mysql 创建++删除 数据表
    mac 配置apache
    mac 安装mysql
    mysql 创建++删除 数据库
    配置默认编码为utf8
    mysql 添加用户
    mysql 查看库结构---查看表结构
    centos7
    centOS 7 安装mysql
    修改字符集
  • 原文地址:https://www.cnblogs.com/CJT-blog/p/10721869.html
Copyright © 2011-2022 走看看