您的位置:首页 > 其它

[LeetCode]Two Sum III - Data structure design

2015-11-27 06:44 447 查看
这道题我用O(n)存O(1)取的时候会超时,但是用O(1)存O(n)取就不会超时,个人觉得是因为测试代码中存比取要多得多。。

其实觉得最好的方法应该是O(logn)存取,用两个二分搜索,但是还没太想明白应该用什么数据结构能实现

public class TwoSum {

private HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();

// Add the number to an internal data structure.
public void add(int number) {
if (map.containsKey(number)) {
map.put(number, map.get(number) + 1);
} else {
map.put(number, 1);
}
}

// Find if there exists any pair of numbers which sum is equal to the value.
public boolean find(int value) {
for (int key : map.keySet()) {
int target = value - key;
if (map.containsKey(target)) {
if (target != key) {
return true;
} else {
if (map.get(key) > 1) {
return true;
}
}
}
}
return false;
}
}

// Your TwoSum object will be instantiated and called as such:
// TwoSum twoSum = new TwoSum();
// twoSum.add(number);
// twoSum.find(value);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: