去重:Set的特性+排序:partition思想

明明的随机数

http://www.nowcoder.com/questionTerminal/3245215fffb84b7b81285493eae92ff0

接受完数组后,用不可有重复元素的Set接收数组,转换成数组后利用快排的思想排序数组。
import java.util.*;
public class Main{
    private int[] sortList;
    public static void main(String[] args){
        int num=0;
        Scanner input = new Scanner(System.in);
        while(input.hasNextInt()){
            Set<Integer> depSet = new HashSet<>();
            Main m = new Main();
            num=input.nextInt();
            for (int i=0; i<num; i++){
                depSet.add(input.nextInt());
            }
            Integer[] temp = depSet.toArray(new Integer[] {});
            m.sortList = new int[temp.length];
            for (int i=0; i<temp.length; i++){
                m.sortList[i] = temp[i].intValue();
            }
            m.recQuickSort(0, m.sortList.length-1);
            for (int i : m.sortList)
                System.out.println(i);
        }
    }


    protected void swap(int dex1, int dex2){
        int temp = sortList[dex1];
        sortList[dex1] = sortList[dex2];
        sortList[dex2] = temp;
    }

    protected int partition(int leftPtr, int rightPtr, int pivot){
        int right = rightPtr;
        while(true){
            while(leftPtr < rightPtr && sortList[leftPtr] <= pivot)
                leftPtr++;
            while(leftPtr < rightPtr && sortList[rightPtr] >= pivot)
                rightPtr--;
            if (leftPtr >= rightPtr)
                break;
            else
                swap(leftPtr, rightPtr);
        }
        swap(leftPtr, right);
        return leftPtr;
    }

    protected void recQuickSort(int left , int right){
        if(left >= right)
            return;
        else{
            int pivot = sortList[right];
            int partition = partition(left, right, pivot);
            recQuickSort(left, partition-1);
            recQuickSort(partition+1, right);
        }
    }
}


全部评论
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(reader.readLine()); Set<integer> set = new TreeSet<>(); for(int i = 0; i < n; i++) { set.add(Integer.parseInt(reader.readLine())); } for(int a : set) { System.out.println(a); } } }</integer>
1 回复 分享
发布于 2022-05-14 00:49

相关推荐

点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
4 收藏 评论
分享
牛客网
牛客企业服务