题解 | #牛群中的第 k 小牛#

牛群中的第 k 小牛

https://www.nowcoder.com/practice/e92a3c7d42be429e93ccfaa33fde4497

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param nums int整型一维数组 
     * @param k int整型 
     * @return int整型
     */
     int ans=-1;
     boolean flag=false;
    public int findKthSmallest (int[] nums, int k) {
        // write code here
        kp(nums,k,0,nums.length-1);
        return ans;
    }
    void kp(int[] nums,int k,int left,int right){
        if(left>=right){
            if(left==k-1){
                ans=nums[left];
            }
            return;
        }
        int key=nums[left];
        int l=left;
        int r=right;
        while(l<r){
            while(l<r&&nums[r]>=key){
                r--;
            }
            nums[l]=nums[r];
            while(l<r&&nums[l]<=key){
                l++;
            }
            nums[r]=nums[l];
        }
        nums[l]=key;
        if(l==k-1){
            ans=nums[l];
          
        }
        if(l>k-1){
            kp(nums,k,left,l-1);
        }
        if(l<k-1){
            kp(nums,k,l+1,right);
        }
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务