LeetCode 170. Two Sum III - Data structure design

《LeetCode 170. Two Sum III - Data structure design》 题目

这个数据结构主要是把数据存储到unordered_multiset里,multiset类似set,但是它允许重复元素的存在。

这是cplusplus.com里关于unordered_multiset的指引
unordered_multiset reference

实现find函数我原本的思路是用set.find(n – value), 但是发现这个方法不能解决例如 set: {0}, find(0) 这样的情况,所以我选择了是用multiset的count函数,如果value == value – n, 那在multisite中至少要这个value出现两次才能满足 n + (value – n) == value 此处n 与 value – n 是值相同的不同元素

class TwoSum {

 public:

        // Add the number to an internal data structure.

      void add(int number) { 

            nums.insert(number);

      } 

      // Find if there exists any pair of numbers which sum is equal to the value.

      bool find(int value) { 

         for (auto n: nums) {

              int count = value - n == n ? 2 : 1;

              if (nums.count(value - n) >= count) return true;

          }

          return false;

      }

  private:

      unordered_multisetnums;

};
    原文作者:Terence_F
    原文地址: https://www.jianshu.com/p/2d7d8b7995d2
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞