回答編集履歴
1
誤解を受けやすい表記を修正
answer
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
> 以下のプログラムのどこに原因があるのか、
|
2
2
|
|
3
|
-
原因ですが、`intersection`メソッドの以下の部分は、配列AとBの要素の並びが昇順(小さい
|
3
|
+
原因ですが、`intersection`メソッドの以下の部分は、配列AとBの要素の並びが昇順(小さい順)であることに依存しています。
|
4
4
|
|
5
5
|
```Java
|
6
6
|
// 読みやすくする為、整形済みです。
|
@@ -18,13 +18,14 @@
|
|
18
18
|
} else {
|
19
19
|
if (uniq.add(v)) {
|
20
20
|
}
|
21
|
-
++d;
|
21
|
+
++d;
|
22
|
+
++e;
|
22
23
|
}
|
23
24
|
}
|
24
25
|
|
25
26
|
```
|
26
27
|
ですので、Aが`{1, 2, 4, 5, 9, 10}`、Bが`{0, 1, 2, 5, 6, 9, 11, 12}`のように昇順にソート済みあれば、正しく出力されています。
|
27
28
|
|
28
|
-
ただ、`if (uniq.add(v)) {}`は意味がない
|
29
|
+
ただ、`if (uniq.add(v)) {}`部分の`if`のブロックは、意味がないですね。
|
29
30
|
|
30
31
|
並び順に依存しないようにするには、あらかじめソートするか、「Aの要素がBに含まれているかどうか」を判定していけばよいと思います。
|