classSolution: defcheckIfExist(self, arr: List[int]) -> bool: arr.sort() n = len(arr) for i inrange(n): v = arr[i] index = bisect_left(arr,2*v) if index >= n or index == i: continue if2*v == arr[index]: returnTrue
class Solution: def checkIfExist(self, arr: List[int]) -> bool: s = set() # 判断0的个数 防止只有一个0的情况出现 zeroCount = 0 for v in arr: if not v: zeroCount = zeroCount + 1 s.add(v)
for v in arr: # 特判0 的情况 if not v: if zeroCount > 1: return True elif 2*v in s: return True return False
classSolution: defcheckIfExist(self, arr: List[int]) -> bool: n = len(arr) arr.sort() p = 0 # 判断x 大于0的情况 # 对于排序后的数 arr[i]*2 > arr[p] p = p + 1 for i inrange(n): while p < n and arr[i] * 2 > arr[p]: p = p + 1 if p < n and p!=i and arr[i] * 2 == arr[p]: returnTrue p = n - 1 # 判断小于0的情况 # 对于排序后的数 arr[i]*2 < arr[p] p = p -1 # 否则无法达成两倍这个条件 因为你负的数越往左才是越小其绝对值才是越大 # 同时i 逆着遍历 才能满足单调性一致 即p 不需要回溯 for i inrange(n-1,-1,-1): while p > -1and arr[i]*2 < arr[p]: p = p -1 if p > -1and p!=i and arr[i] * 2 == arr[p]: returnTrue returnFalse