[伯俊]二種類の溶液(ジャワ)


アルゴリズムの問題解決をブログにアップロードしたのは、コードを解答し、記録するためです.
これからは質問を吹き飛ばすよりも、リンクだけを残して、答えを見極めるために、私たちは皆さんに位置づけます!

📄 質問する


[伯俊]二種類の溶液

👩‍💻 に答える


1.問題を理解する


この問題は,与えられた数列の2つの数を加算し,0に最も近い組合せを生成し,その組合せの数値を昇順に出力する問題である.

2.解答


二重複文ではなく、二重ポインタで簡単に解くことができます.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());
        int[] arr = new int[N];
        st = new StringTokenizer(br.readLine(), " ");
        for(int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        //twoPointer
        int p1 = 0;
        int p2 = N-1;
        int fit = Integer.MAX_VALUE;
        String answer = “ “;

        Arrays.sort(arr);

        while(p1 < p2) {
            int sum = arr[p1] + arr[p2];

            if(Math.abs(sum) < fit) {
                fit = Math.abs(sum);
                answer = arr[p1] + " " + arr[p2];
            }if(sum > 0) {
                p2--;
            }else {
                p1++;
            }
        }

        System.out.println(answer);
    }
}