题解 | #牛群中的第 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);
}
}
}
安克创新 Anker公司福利 896人发布