2016-10-06 6 views
0

最近、4つのテストケースの出力が間違っているという質問があったLinkedin配置テストを受けました。私は入力/出力が隠されていたので、私の間違いは何だったのか分かりませんでした。他の二つの要素の積は、その数に等しくなるとその数.IFないを返す配列から最大の要素を検索し、そのような要素は、次に、リターンある配列からの最大数は、その配列内の他の2つの数字の積に等しい

はとにかくここで問題でした-1。ここで

私の解決策だった:私はあなたが配列配列内の2つの要素の積で可能な最大数を見つける必要があると思います

static int maxElement(int[] arr) { 
    Arrays.sort(arr); 
    int max = arr[arr.length-1]; 
    int result = 0; 
    for (int i = 0; i < arr.length - 1; i++) { 
    for (int j = i + 1; j < arr.length; j++) { 
     result = arr[i] * arr[j]; 
     if (result == max) { 
     return max; 
     } 
    } 
    } 
    return -1; 
} 
+0

何のテストケースだったと、彼らがどのように(どのようなメッセージ付き)が失敗したのか? –

+0

あなたのコードは、-1または配列の最大値(その数が他の2つの要素の積である場合)を返すことができます。他の要素の1つが操作の結果である場合、どうでしょうか? –

答えて

0


私はこれを仮定した場合、あなたのコードは、このテストケースで失敗した: int[] arr = {2,4,5,3,7,6};、答えはそれが上記のテスト・ケースのために動作します。このコードは以下の6 を確認する必要があります。
もう一度逆さにfor loopを追加して、可能な値と製品を確認してください。

static int maxElement(int[] arr) { 
     Arrays.sort(arr); 
     for (int k = arr.length-1; k >= 0; k--) { 
      int max = arr[k]; 
      int result = 0; 
      for (int i = 0; i < arr.length - 1; i++) { 
       for (int j = i + 1; j < arr.length; j++) { 
        result = arr[i] * arr[j]; 
        if (result == max) { 
         return max; 
        } 
       } 
      } 
     } 
     return -1; 
    } 
+0

このシナリオを考えてください(可能な最大数)。私は配列から最大数を取ってプロブラムを修正しようとし続けました。今、私はテストを提出したので、このコードをチェックすることはできません。しかし、あなたの解決策は私にとって正しいようです。 –

+0

ええ、この種の質問はあなたを混乱させる傾向があります。だから、それを完璧にするために質問を2〜3回読む必要があります。ハッピーコーディング! – Shaggy

+0

あなたがそう感じるなら、正しい答えとしてそれをマークしてください! – Shaggy

0
List<Integer> list = new ArrayList<Integer>(); 
    for (int i = 0; i < a.length; i++) { 
     list.add(a[i]); 
    } 
    int maxSum = 0; 
    for (int i = 0; i < a.length; i++) { 
     for (int j = i + 1; j < a.length; j++) { 
      if ((a[i] * a[j]) > maxSum) { 
       if(list.contains(a[i] * a[j])) 
       maxSum = a[i] * a[j]; 
      } 
     } 
    } 

    if (maxSum != 0) 
     return maxSum; 
    return -1; 
関連する問題