zoukankan      html  css  js  c++  java
  • 1346. Check If N and Its Double Exist

    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
    class Solution {
        public boolean checkIfExist(int[] arr) {
            Map<Integer, Integer> map = new HashMap();
            int zero = 0;
            for(int i = 0; i < arr.length; i++){
                map.putIfAbsent(arr[i], i);
                if(arr[i] == 0) zero++;
            }
            for(int i: arr){
                if(zero == 2) return true;
                else{
                    map.remove(0);
                    if(map.containsKey(2*i)) return true;
                }
            }
            return false;
        }
    }

    0很特殊,如果用hashmap的话要注意判断0的数量,如果是两个就是true,一个的话要先remove了0再做判断。

    class Solution {
        public boolean checkIfExist(int[] arr) {
            HashSet<Integer> set = new HashSet<>();
            for(int a : arr) {
                if(set.contains(a*2) || (a%2 == 0 && set.contains(a/2))) return true;
                set.add(a);
            }
            return false;
        }
    }

    相比而言hashset更好

  • 相关阅读:
    啥叫ORM
    git reset --hard HEAD^ 在cmd中执行报错
    windows下生成文件目录树
    批量解决win10图标上有两个蓝色箭头的方法
    Sublime Text 3 安装包
    Sublime Text 3 部分安装过程记录
    sense8影评摘抄
    如何取消chrome的自动翻译
    把本地仓库同步到github上去
    关于PDF阅读器
  • 原文地址:https://www.cnblogs.com/wentiliangkaihua/p/12325027.html
Copyright © 2011-2022 走看看