Check If N and Its Double Exist LeetCode solution in Python
1class Solution(object):2def checkIfExist(self, arr):3"""4:type arr: List[int]5:rtype: bool6"""7"""8执行用时:24 ms, 在所有 Python 提交中击败了59.63%的用户9内存消耗:13 MB, 在所有 Python 提交中击败了58.72%的用户10"""11arr = sorted(arr) # 排序12for i in range(len(arr) - 1): # 只要搜寻 n - 1 个,因为最后一个数不会有倍数出现13l = 014r = len(arr) - 115while l <= r:16mid = int((l + r) / 2) # 目前位置17val1 = arr[mid] # 目前位置的数值18val2 = arr[i] * 2 # 要寻找的目标19if val1 == val2 and mid != i: # arr[mid] 必須和 arr[i] * 2 且不同位置20return True21elif val2 < val1: # 目标在目前位置的左边,所以要往左边找22r = mid - 123else: # 目标在目前位置的右边,所以要往右边找24l = mid + 125return False