两个和数据结构问题

时间:2017-02-22 22:42:14

标签: algorithm data-structures

我为两个总和问题构建了一个数据结构。在这个数据结构中,我构建了add和find方法。
add - 将数字添加到内部数据结构中 find - 查找是否存在任何数字,其总和等于该值。 例如:

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 个答案:

答案 0 :(得分:1)

您的代码似乎没有任何问题。

然而,编码挑战可能需要更高效的解决方案。 (你检查每个项目的每个项目,这将采取O(N ^ 2))。

实施find的最佳解决方案是使用HashMap,这将采用O(N)。它详细解释了here