1346.检测整数及其两倍数确实存在(javascript)1346.CheckIfNandItsDoubleExist
原创给你一个整数数组 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/
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除
itfan123


