1346.检测整数及其两倍数确实存在(javascript)1346.CheckIfNandItsDoubleExist

原创
小哥 3年前 (2022-11-10) 阅读数 9 #大杂烩

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

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

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

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]

示例 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 。

分析主题:(0是一个例外,只需确保列表中出现两个不同的位置。0,返回true)
1.当发现列表不是0数字2除法,余数再次存在于列表中,即返回true
2.有两个0在特殊情况下,返回。true
3.在其他情况下,返回false

var checkIfExist = function (arr) {
    let len = arr.length
    for (let i = 0; i < len; i++) {
        if (arr[i] != 0 && arr[i] % 2 == 0 && arr.indexOf(Math.floor(arr[i] / 2)) >= 0) {
            return true
        } else if (arr[i] == 0) {
            if (arr.indexOf(0) != arr.lastIndexOf(0)) {
                return true;
            }
        }
    }
    return false
};

leetcode: https://leetcode-cn.com/problems/check-if-n-and-its-double-exist/

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除