2017-03-25 6 views
0

最近この質問がありましたが、私は解決策を思いつきませんでした。 2つのint []配列を持つ場合、重複範囲を含むint []配列を返します。各配列には2つの要素しか含まれていないと仮定できます。例えば:int []配列のヌル値を返します

  1. 範囲1 = [1、50]、範囲2 = [50、100]、戻り[50]

  2. 範囲1 = [1、100]、範囲2 = [50、150] 、戻り[50、100]

  3. 範囲1 = [0、50]、範囲2 = [100、150]、ヌル

を返す提供メソッドのシグネチャは次の通りであった:

public static int[] range(int[] range1, int[] range2) { } 

int []配列に "null"を返す方法につきました。

ご協力いただければ幸いです。ありがとう。

は、これは私のアプローチでした:

Arrays.sort(range1); 
    Arrays.sort(range2); 

    int[] range = new int[2];  

    if (range1[1] > range2[0]) { 
     range[0] = range2[0]; 
     range[1] = range1[1]; 
    } else if (range1[1] == range2[0]) { 
     range[0] = range1[1]; 
    } else if (range1[1] < range2[0]) { 
     // Didn't know what to put here 
    } 

    return range; 
+3

「私は立ち往生しました」...これまでに書いたことを私たちに教えてください。 – nhouser9

+3

メソッドからnull 'int []'を返す方法: 'return null;'はい、本当に簡単です。 – Andreas

+0

@アンドレアスありがとう、愚かな私!私は思っています。 – viksidada

答えて

0

答え範囲の開始は、2の最高です。終わりは二人のうちで最も少ない。その結果、開始が得られる最終より大きい場合、重なりがない、結果はnullにする必要があります:私はあなたが原因であれば、最後のテストを行う必要がいけないと思います

public static int[] range(int[] range1, int[] range2) { 
    int start = Math.max(range1[0], range2[0]); 
    int end = Math.min(range1[1], range2[1]); 
    if (start < end) { 
     return new int[]{start, end}; 
    } else if (start == end) { 
     return new int[]{start}; 
    } else { 
     return null; 
    } 
} 
+0

ありがとうMureinik! – viksidada

0

ない再・ファースト条件又は第二conditon

int[] range = new int[2];  

    if (range1[1] > range2[0]) { 
     range[0] = range2[0]; 
     range[1] = range1[1]; 
    } else if (range1[1] == range2[0]) { 
     range[0] = range1[1]; 
    } 

return range; 
関連する問題