2017-02-22 5 views
1

2つの合計問題のデータ構造を構築しました。このデータ構造では、addメソッドとfindメソッドを作成しました。
add - 数値を内部データ構造体に追加します。
find - 合計が値と等しい数のペアが存在するかどうかを調べます。たとえば :2つの合計データ構造の問題

add(1); add(3); add(5); 
find(4) // return true 
find(7) // return false 

次はそう何がこのコードが間違っている、私のコードですか?
http://www.lintcode.com/en/problem/two-sum-data-structure-design/
が、これはテストのウェブサイトで、いくつかのケースでは

public class TwoSum { 
    private List<Integer> sets; 
    TwoSum() { 
     this.sets = new ArrayList<Integer>(); 
    } 
    // Add the number to an internal data structure. 
    public void add(int number) { 
     // Write your code here 
     this.sets.add(number); 
    } 

    // Find if there exists any pair of numbers which sum is equal to the value. 
    public boolean find(int value) { 
     // Write your code here 
     Collections.sort(sets); 
     for (int i = 0; i < sets.size(); i++) { 
      if (sets.get(i) > value) break; 
      for (int j = i + 1; j < sets.size(); j++) { 
       if (sets.get(i) + sets.get(j) == value) { 
        return true; 
       } 
      } 
     } 
     return false; 
    } 
} 
+1

コードは機能していませんか?そうであれば、どこに問題があるかと思われる。 – Imprfectluck

+0

http://www.lintcode.com/en/problem/two-sum-data-structure-design/。これはテストウェブサイトです。そして私はそれのいくつかのテストを通過することはできません。 –

+0

@WBLeeログインが必要なサイトにはリンクしません。あなたが質問自体に*を渡していないテストケースがあると言うことができないなら、おそらくStackOverflowを尋ねるべきではありません。 –

答えて

1

を渡すことができませんでしたあなたのコードに何か問題があるように思えません。

しかし、コード化の課題には、よりパフォーマンスの高いソリューションが必要になる可能性があります。 (すべてのアイテムをすべてのアイテムに対してチェックすると、O(N^2)になります)。

findを実装する最適なソリューションは、HashMapを使用しており、O(N)になります。詳しくはhereで説明されています。