Advertisement
IrinaIgnatova

Exam-JavaAdvanced-Socks_stacksAdnQueues

Dec 16th, 2019
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.23 KB | None | 0 0
  1. package socks;
  2.  
  3. import java.util.*;
  4.  
  5. public class Main {
  6.     public static void main(String[] args) {
  7.         Scanner scanner = new Scanner(System.in);
  8.  
  9.         ArrayDeque<Integer> leftSocks = new ArrayDeque<>();
  10.         ArrayDeque<Integer> rightSocks = new ArrayDeque<>();
  11.  
  12.  
  13.         Arrays.stream(scanner.nextLine().split(" "))
  14.                 .mapToInt(Integer::parseInt)
  15.                 .forEach(leftSocks::push);//така четем и добавяме в стека
  16.  
  17.  
  18.         Arrays.stream(scanner.nextLine().split(" "))
  19.                 .mapToInt(Integer::parseInt)
  20.                 .forEach(rightSocks::offer);//така четем и добавяме в опашка
  21.  
  22.         List<Integer> pairs = new ArrayList<>();//правим си списък за чорапите в чифт
  23.  
  24.         //пускаме си един цикъл докато имам елементи и в двете колекции напр.  while и извършваме дадените действия:
  25.  
  26.         while (leftSocks.size() > 0 && rightSocks.size() > 0) {
  27.             int leftSock = leftSocks.peek();//създаваме си променливи за да можем да сравняваме елементите от двете колекции
  28.             int rightSock = rightSocks.peek();
  29.  
  30.             if (leftSock > rightSock) {
  31.                 leftSocks.pop();//защото горе имаме peek а по усл трябва да ги махнем щом намерим чифт
  32.                 rightSocks.poll();
  33.                 pairs.add(leftSock + rightSock);
  34.  
  35.             } else if (rightSock > leftSock) {
  36.                 leftSocks.pop();
  37.             } else {
  38.                 rightSocks.poll();
  39.                 leftSocks.pop();//за да върнрм в стека стойността+1
  40.                 leftSocks.push(leftSock + 1);
  41.             }
  42.         }
  43.         //след като сме намерили всички чифтове търсим максималната стойност на pair
  44.         int maxPair = pairs.stream().max(Comparator.comparingInt(t -> t)).get();
  45.         System.out.println(maxPair);
  46.         pairs.forEach(p -> System.out.print(p + " "));
  47.         System.out.println();
  48.     }
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement