第二题
public ListNode sortList(ListNode head) { ListNode temp = head; TreeMap<Integer, Integer> map = new TreeMap<>(); while (temp != null) { map.put(temp.val, map.getOrDefault(temp.val, 0) + 1); temp = temp.next; } temp = head; while (temp != null) { for (Map.Entry<Integer, Integer> entry : map.entrySet()) { Integer key = entry.getKey(); Integer num = entry.getValue(); if (num == 0) { break; } map.put(key, num - 1); temp.val = key; temp = temp.next; } } return head; }
第三题
package FreeTime; import java.util.ArrayDeque; import java.util.HashMap; import java.util.Objects; import java.util.Scanner; public class BS_3 { HashMap<Integer, Integer> map = new HashMap<>(); ArrayDeque<Info> deque = new ArrayDeque<>(); ArrayDeque<Info> tempDeque = new ArrayDeque<>(); public void in(int index, String s) { deque.add(new Info(index, s)); map.put(index, map.getOrDefault(index, 0) + 1); } public String out(int index) { if (deque.isEmpty() || map.isEmpty() || (index != 0 && !map.containsKey(index))) { return "-1"; } if (index == 0) { Info poll = deque.poll(); map.put(poll.index, map.getOrDefault(poll.index, 0) - 1); if (map.get(poll.index) <= 0) { map.remove(poll.index); } return poll.value; } Info element = null; while (!deque.isEmpty() && (element = deque.poll()).index != index) { tempDeque.addFirst(element); } while (!tempDeque.isEmpty()) { deque.addFirst(Objects.requireNonNull(tempDeque.pollFirst())); } map.put(index, map.get(index) - 1); if (map.get(index) == 0) { map.remove(index); } return element == null ? "-1" : element.value; } public static void main(String[] args) { BS_3 bs_3 = new BS_3(); Scanner in = new Scanner(System.in); int operateNum = Integer.parseInt(in.nextLine()); for (int i = 0; i < operateNum; i++) { String line = in.nextLine(); String[] tokens = line.split(" "); if (tokens[0].equals("in")) { int index = Integer.parseInt(tokens[1]); bs_3.in(index, tokens[2]); } else if (tokens[0].equals("out")) { int index = Integer.parseInt(tokens[1]); System.out.println(bs_3.out(index)); } } } static class Info { int index; String value; public Info(int index, String value) { this.index = index; this.value = value; } } }