Monday, February 17, 2020

1346. Check If N and Its Double Exist (Easy)

Q
Given an array arr of integers, check if there exists two integers N and M such that N is the double of M ( i.e. N = 2 * M).
More formally check if there exists two indices i and j such that :
  • i != j
  • 0 <= i, j < arr.length
  • arr[i] == 2 * arr[j]

Example 1:
Input: arr = [10,2,5,3]
Output: true
Explanation: N = 10 is the double of M = 5,that is, 10 = 2 * 5.
Example 2:
Input: arr = [7,1,14,11]
Output: true
Explanation: N = 14 is the double of M = 7,that is, 14 = 2 * 7.
Example 3:
Input: arr = [3,1,7,11]
Output: false
Explanation: In this case does not exist N and M, such that N = 2 * M.

Constraints:
  • 2 <= arr.length <= 500
  • -10^3 <= arr[i] <= 10^3



A:
忘记 0 的特殊情况了。

class Solution {
public:
    bool checkIfExist(vector<int>& arr) {
        std::set<int> s;
        int count0 = 0;
        for(int a : arr)
        {
            if (a==0)            
                count0 +=1;
            else
                s.insert(a);
        }
        if (count0>=2)
            return true;
        for(int a:arr)
        {
            if(s.find(a+a) != s.end())
            {
                return true;
            }
        }
        return false;
    }
};



1 comment:

  1. As stated by Stanford Medical, It is really the SINGLE reason this country's women get to live 10 years more and weigh an average of 42 pounds less than we do.

    (By the way, it has totally NOTHING to do with genetics or some secret exercise and EVERYTHING to do with "how" they eat.)

    BTW, I said "HOW", not "what"...

    Click on this link to see if this quick quiz can help you discover your true weight loss potential

    ReplyDelete