LeetCode-Two Sum III - Data structure design
Posted LiBlog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode-Two Sum III - Data structure design相关的知识,希望对你有一定的参考价值。
Design and implement a TwoSum class. It should support the following operations: add
and find
.
add
- Add the number to an internal data structure.
find
- Find if there exists any pair of numbers which sum is equal to the value.
For example,
add(1); add(3); add(5); find(4) -> true find(7) -> false
Analysis:
Use O(1) add and O(n) find.
Solution:
public class TwoSum { HashMap<Integer,Integer> numCounts = new HashMap<Integer,Integer>(); List<Integer> nums = new ArrayList<Integer>(); // Add the number to an internal data structure. public void add(int number) { if (numCounts.containsKey(number)){ numCounts.put(number,numCounts.get(number)+1); } else { nums.add(number); numCounts.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 num : nums){ int otherNum = value - num; boolean validPair = (otherNum==num) ? (numCounts.get(num)>=2) : numCounts.containsKey(otherNum); if (validPair){ return true; } } return false; } } // Your TwoSum object will be instantiated and called as such: // TwoSum twoSum = new TwoSum(); // twoSum.add(number); // twoSum.find(value);
以上是关于LeetCode-Two Sum III - Data structure design的主要内容,如果未能解决你的问题,请参考以下文章
leetCode-Two Sum II - Input array is sorted
leetcode-Two Sum II - Input array is sorted-167
216 Combination Sum III 组合总和 III
Combination Sum,Combination Sum II,Combination Sum III