剑指Offer-30

xiaoxiao2021-02-28  73

题目:

输入 n 个整数,找出其中最小的的 K 个数。

实现

// coding = java public class Solution30 { public static void findNums(int[] nums ,int k){ if(nums==null || nums.length<1 || k<1 || k>nums.length){ return; } if(k==nums.length){ for(int i=0;i<k;i++){ System.out.print(nums[i]); } return; } int low = 0; int high = nums.length-1; int index = partition(nums,low,high); while(index!=k){ if(index>k){ high=index-1; index = partition(nums,low,high); } else{ low = index+1; index = partition(nums,low,high); } } for(int i =0;i<k;i++){ System.out.print(nums[i]); } } public static int partition(int nums[],int low,int high){ int pivot = nums[low]; while (low<high){ while (low<high && nums[high]>=pivot){ high--; } nums[low]=nums[high]; while (low<high && nums[low]<=pivot){ low++; } nums[high]=nums[low]; } nums[low]=pivot; return low; } public static void main(String[] args){ int[] nums = {1,2,3,4,5,6,7,8,9}; findNums(nums,8); } }
转载请注明原文地址: https://www.6miu.com/read-31337.html

最新回复(0)