题解 | #明明的随机数#
明明的随机数
https://www.nowcoder.com/practice/3245215fffb84b7b81285493eae92ff0
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Set<Integer> set =new HashSet<>();
Scanner in = new Scanner(System.in);
int n=in.nextInt();
for(int i=0;i<n;i++){
set.add(in.nextInt());
}
int i=0;
int[] nums=new int[set.size()];
for(Integer num:set){
nums[i]=num;
i++;
}
//System.out.println(Arrays.toString(nums));
// 快速排序
quickSort(nums,0,nums.length-1);
for(int num:nums){
System.out.println(num);
}
}
public static void quickSort(int[] nums,int low,int high){
if(low>high){
return;
}
// 选取一个基准数
int i,j,baseNum;
i=low;
j=high;
baseNum=nums[low];
while(i<j){
while(i<j&&nums[j]>=baseNum){
j--;
}
while(i<j&&nums[i]<=baseNum){
i++;
}
if(i<j){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;
}
}
nums[low]=nums[i];
nums[i]=baseNum;
quickSort(nums,low,i-1);
quickSort(nums,j+1,high);
}
}
本题过程:
- 使用set进行去重
- 生成固定长度数组,遍历set赋值
- 对int数组进行快速排序(注意基线条件和递归条件)
- 遍历排序好的数组输出
先刷题 后面在优化


