题解 | #明明的随机数#

明明的随机数

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数组进行快速排序(注意基线条件和递归条件)
  • 遍历排序好的数组输出

先刷题 后面在优化

全部评论

相关推荐

2025-12-11 14:24
门头沟学院 Java
牛客35720396...:不要用boss,全是骗
点赞 评论 收藏
分享
2025-12-20 13:19
已编辑
曲阜师范大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务