Leetcode: Two Sum III - Data structure design

4297 단어 LeetCode
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

관건은 중복된 숫자를 처리하고hashmap으로 값을 저장한 다음value-num==num을 판단하는 경우count가 >=2.
 1 public class TwoSum {

 2     HashMap<Integer, Integer> map;

 3     public TwoSum() {

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

 5     }

 6     

 7     public void add(int x) {

 8         if (map.containsKey(x)) {

 9             map.put(x, map.get(x)+1);

10         }

11         else {

12             map.put(x, 1);

13         }

14     }

15     

16     public boolean find(int target) {

17         for (int i : map.keySet()) {

18             if (map.containsKey(target-i)) {

19                 if (target - i != i) return true;

20                 else if (map.get(i) >= 2) return true;

21             }

22         }

23         return false;

24     }

25 }

17줄의 맵을 주의하세요.KeySet () return은 Set 형식의 키의 집합이고, Set은 Collection의 Subinterface이기 때문에 이런 for 순환 방법은 Set에도 적용된다.그리고 키가 이론적으로 Integer라고 해도 for 순환 앞의 요소는 int:for(int i:map.keyset () 라고 쓸 수 있다

좋은 웹페이지 즐겨찾기