描述
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.
Note:
2 <= arr.length <= 500
-10^3 <= arr[i] <= 10^3
解析
根据题意,找出是否在 arr 中存在两个数,其中一个数是另一个数的两倍,且他们的索引不同。直接遍历 arr ,当索引为 i 的时候,使用 arr.index(arr[i]*2) ,如果结果且索引不相同则直接返回 True ,否则会报异常表示 arr 中没有 arr[i]*2 这个数,继续对下一个数字进行查找即可。如果遍历结束则直接返回 False ,表示没有符合题意的结果出现。
解答
class Solution(object):
def checkIfExist(self, arr):
"""
:type arr: List[int]
:rtype: bool
"""
N = len(arr)
for i in range(N):
try:
if arr.index(arr[i]*2)!=i:
return True
except:
continue
return False
运行结果
Runtime: 36 ms, faster than 80.66% of Python online submissions for Check If N and Its Double Exist.
Memory Usage: 13.5 MB, less than 63.27% of Python online submissions for Check If N and Its Double Exist.
原题链接:leetcode.com/problems/ch…
您的支持是我最大的动力