CH03 Two pointers, Sliding window[효율성: O(n^2)-->O(n)]

package 효율성.main1;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int sizeA = scanner.nextInt();
        int[] arrayA = new int[sizeA];
        for (int i = 0; i < sizeA; i++) {
            arrayA[i] = scanner.nextInt();
        }

        int sizeB = scanner.nextInt();
        int[] arrayB = new int[sizeB];
        for (int i = 0; i < sizeB; i++) {
            arrayB[i] = scanner.nextInt();
        }

        int indexA = 0;
        int indexB = 0;

        List<Integer> result = new ArrayList<>();
        while (indexA < sizeA && indexB < sizeB) {
            int elementA = arrayA[indexA];
            int elementB = arrayB[indexB];

            if (elementA > elementB) {
                result.add(elementB);
                indexB++;
            } else if (elementA < elementB) {
                result.add(elementA);
                indexA++;
            } else {
                result.add(elementA);
                result.add(elementB);
                indexA++;
                indexB++;
            }
        }

        while (indexA < sizeA) {
            result.add(arrayA[indexA]);
            indexA++;
        }

        while (indexB < sizeB) {
            result.add(arrayB[indexB]);
            indexB++;
        }

        result.forEach(element -> {
            System.out.print(element + " ");
        });
    }
}

Last updated