AcWing:1532。コインを探す
アイデア:
- ハッシュ表
- ダブルポインタ
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");
}
}