前提・実現したいこと
参考:leetcodeの問題
ある配列と、数が与えられて、
2つの配列の要素を加算して与えられた数になればその2つの要素を返すプログラムを書いています。
ただし、配列の要素を2回以上使うことはできないとします。
//例えば、nums = [2, 7, 11, 15] target = 9の場合 // nums[0] + nums[1] = 2 + 7 = 9だから return [0, 1]
発生している問題・エラーメッセージ
以下のソースコードに書き換えると、オンラインジャッジでリジェクトされてしまいます。
IllegalArgumentExceptionの働きと使い方が理解できていないため、
該当する要素がない場合にSystem.out.printlnではリジェクトされてしまう理由がわかりません。
Java
1class Solution { 2 public int[] twoSum(int[] nums, int target) { 3 for(int i = 0; i < nums.length; i++){ 4 for(int j = i + 1; j < nums.length; j++){ 5 if(nums[j] == target - nums[i]){ 6 return new int[]{i, j}; 7 } 8 } 9 } 10 System.out.println("No two sum solution"); 11 } 12 13}
該当のソースコード
このコードで総当たりで見つけ出すことはできます。
Java
1class Solution { 2 public int[] twoSum(int[] nums, int target) { 3 for(int i = 0; i < nums.length; i++){ 4 for(int j = i + 1; j < nums.length; j++){ 5 if(nums[j] == target - nums[i]){ 6 return new int[]{i, j}; 7 } 8 } 9 } 10 throw new IllegalArgumentException("No two sum solution"); 11 } 12 13}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/03/09 00:37
2018/03/09 00:48
退会済みユーザー
2018/03/09 00:53