1532.コインを探す(ハッシュテーブル/ダブルポインター)

AcWing:1532。コインを探す

ここに画像の説明を挿入

アイデア:

  1. ハッシュ表
  2. ダブルポインタ

ACコードハッシュテーブル

import java.util.*;
import static java.lang.System.out;

public class Main{
    
    
    
    public static void main(String[] args) {
    
    
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int[] arr = new int[n];
        Map<Integer, Integer> map = new HashMap<>(); 
        for(int i = 0; i < n; i++) {
    
    
            arr[i] = in.nextInt();
            map.put(arr[i], 1);
        }
        
        Arrays.sort(arr);
        
        for(int i = 0; i < n; i++) {
    
    
            int tmp = m - arr[i];
            if(tmp != arr[i] && map.containsKey(tmp)) {
    
    
                out.println(arr[i] + " " + tmp);
                return ;
            }
        }
        
        out.println("No Solution");
    }
    
}





ACコードデュアルポインター

import java.util.*;
import static java.lang.System.out;

public class Main{
    
    
    
    public static void main(String[] args) {
    
    
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
    
    
            arr[i] = in.nextInt();
        }
        Arrays.sort(arr);
        int left = 0, right = n - 1;
        
        while(left < right) {
    
    
            if(arr[left] + arr[right] > m) {
    
    
                right--;
            } else if(arr[left] + arr[right] < m) {
    
    
                left++;
            } else {
    
    
                out.println(arr[left] + " " + arr[right]);
                return ;
            }
        }
        
        out.println("No Solution");
    }
    
}



おすすめ

転載: blog.csdn.net/qq_43765535/article/details/112820100