leetcode 1346. 检查整数及其两倍数是否存在(C++)

给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。

更正式地,检查是否存在两个下标 i 和 j 满足:

  • i != j
  • 0 <= i, j < arr.length
  • arr[i] == 2 * arr[j]

 

示例 1:

输入:arr = [10,2,5,3]
输出:true
解释:N = 10 是 M = 5 的两倍,即 10 = 2 * 5 。

示例 2:

输入:arr = [7,1,14,11]
输出:true
解释:N = 14 是 M = 7 的两倍,即 14 = 2 * 7 

示例 3:

输入:arr = [3,1,7,11]
输出:false
解释:在该情况下不存在 N 和 M 满足 N = 2 * M 。

 

提示:

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

C++

class Solution {
public:
    bool checkIfExist(vector<int>& arr) 
    {
        map<int,int> tmp;
        int n=arr.size();
        for(int i=0;i<n;i++)
        {
            tmp[arr[i]]++;
        }
        for(int i=0;i<n;i++)
        { 
            if(tmp.find(2*arr[i])!=tmp.end())
            {
                if(0==arr[i])
                {
                    if(tmp[0]>1)
                    {
                        return true;
                    }
                }
                else
                {
                    return true;
                }
            }
        }
        return false;
    }
};

 


版权声明:本文为qq_27060423原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。