LeetCode刷题11-数组去重和排序
package com.example.demo.leetcode.case202208; import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; import java.util.stream.Collectors; /** * 功能描述 * * @author ASUS * @version 1.0 * @Date 2022/8/6 */ public class Main2022080606 { /* 输入有2行,第1行为一个正整数,表示需要输入n个数。(n<=100且输入的数不大于1000)。第2行有n个用空格隔开的正整数。 输出也是两行,第1行为一个正整数j,表示去重后剩余有j个数。第2行为j个用空格隔开的正整数,为上述输入数去重后从小到大已排好序的这样一个序列。 输入 10 20 40 32 67 40 20 89 300 400 15 输出 8 15 20 32 40 67 89 300 400 */ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 获取输入信息 String total = scanner.nextLine(); String str = scanner.nextLine(); // 去重后元素总数 System.out.println(Arrays.asList(str.split(" ")) .stream() .distinct() .collect(Collectors.toList()).size()); // 排序后数据 System.out.println(Arrays.asList(str.split(" ")) .stream() .distinct() .sorted(Comparator.comparingInt(Integer::parseInt)) .collect(Collectors.joining(" "))); } }
package com.example.demo.leetcode.case202208; import java.util.*; import java.util.stream.Collectors; /** * 功能描述 * * @author ASUS * @version 1.0 * @Date 2022/8/6 */ public class Main2022080607 { /* 给定一个乱序的数组,数组大小不超过100.删除所有的重复元素,使得每个元素只出现一次, 并且按照出现的次数从高到低进行排序,相同出现次数按照第一次出现顺序进行先后排序。 输入 1,3,3,3,2,4,4,4,5 输出 3,4,1,2,5 */ public static void main(String[] args) { // 获取输入信息 Scanner scanner = new Scanner(System.in); String str = scanner.nextLine(); // 记录元素以及重复个数 TreeMap<String, Integer> map = new TreeMap<>(); LinkedHashSet<String> elementList = new LinkedHashSet<>(); for (String skey : str.split(",")) { if (elementList.contains(skey)) { map.put(skey, map.get(skey) + 1); continue; } map.put(skey, 1); elementList.add(skey); } // 根据元素个数 由高到低排序 System.out.println(elementList.stream() .sorted(Comparator.comparingInt(map::get).reversed()) .collect(Collectors.joining(","))); } }
本文来自博客园,作者:chch213,转载请注明原文链接:https://www.cnblogs.com/chch213/p/16557643.html