6/28, LinkedIn 面经题
需要注意的 corner case 是,[add(0), find(0)],这类情况,还有 [add(2), add(2), find(4)] 这类。
Quick-Find:
public class TwoSum {
HashSet<Integer> num = new HashSet<>();
HashSet<Integer> sum = new HashSet<>();
// Add the number to an internal data structure.
public void add(int number) {
if(num.contains(number)) {
sum.add(number * 2);
} else {
Iterator<Integer> iter = num.iterator();
while(iter.hasNext()){
int num = iter.next();
sum.add(num + number);
}
num.add(number);
}
}
// Find if there exists any pair of numbers which sum is equal to the value.
public boolean find(int value) {
return sum.contains(value);
}
}事实证明,拿到 iterator 手动 iter.next 要比直接用 enhanced for loop 快。
Quick-Add:
Last updated