leetcode 1346. Check If N and Its Double Exist(python)

561 阅读1分钟

描述

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…

您的支持是我最大的动力