記事ディレクトリ
アリババは金を探しています (III)
タイトル説明
貧しい脊椎動物のアリババは、薪割りの途中で偶然盗賊団の宝物庫を発見するが、その宝物庫には0からNまでの番号が振られた箱があり、それぞれの箱には番号が付けられている。アリババは呪文番号を読み取って、宝箱の中に 2 つの異なる箱があり、2 つの箱の番号が同じであり、2 つの箱の番号の差の絶対値が以下であるかどうかを確認します。スペル番号
は、ペアの宝箱が存在する場合は、最初に見つかったペアの宝箱の左の宝箱の番号を返し、存在しない場合は-1を返します。
説明を入力してください
- 最初の行にカンマで区切って数字の文字列を入力します。例: 1,2.3,1
- 文字列内の数値の数>=1、<=100000、各数値値>=-100000、<=100000。
- 2 行目に呪文番号を入力します。例: 3、呪文番号 >=1、<=100000
出力説明
このような宝箱のペアが存在します。最初に見つかった宝箱のペアの左の宝箱の番号を返します。そうでない場合は、-1 を返します。
例
入力 | 6,3,1,6 3 |
出力 | 1 |
説明する | なし |
入力 | 5,6,7,5,6,7 2 |
出力 | 0 |
説明する | なし |
トピック分析
- ユースケースには問題があるはずです。ユースケース 1 は 0 を返し、ユースケース 2 は -1 を返す必要があります。
- コード全体を見ると、問題を解決するという考え方は非常にシンプルです
import java.util.Scanner;
public class T65 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String strArr[] = input.split(",");
int nums[] = new int[strArr.length];
for (int i = 0; i < strArr.length; i++) {
nums[i] = Integer.parseInt(strArr[i]);
}
int objNum = sc.nextInt();
for (int left = 0; left < nums.length; left++) {
for (int right = 0; right < nums.length; right++) {
if (left == right)
continue;
if (nums[left] != nums[right])
continue;
if (Math.abs(right - left) > objNum)
continue;
System.out.println(left);
System.exit(0);
break;
}
}
System.out.println(-1);
}
}
コードの実行例