检查数字是否是Python中排序数组中的多数元素
假设我们有一个名为nums的数组,该数组以非降序排序,并且有一个数字目标。我们必须确定目标是否是多数因素。在数组中,多数元素是在长度为N的数组中出现超过N/2次的元素。因此,如果数组类似-[[2,4,5,5,5,5,5,5,6,6]并且目标为5,则输出为true。
为了解决这个问题,我们将遵循以下步骤-
将有两个帮助模块,lower()和upper()。这些如下。
在lower()采用两个参数阵列ARR和目标,那就是-
低:=0,高:=长度
而低<高-
中:=低+(高-低)/2
如果arr[mid]=目标,则高=中,否则低=中+1
当arr[high]=目标时返回高,否则返回-1
在upper()采用两个参数阵列ARR和目标,那就是-
低=0,高=长度arr
而低<高-
中=低+(高-低)/2
如果arr[mid]=目标,则低=中,否则高=中-1
当arr[low]=目标时返回低,否则返回-1
主要功能将类似于-
u:=upper(arr,target)
l:=较低(arr,目标)
如果u–l+1>(数字的长度)/2(如果u不为-1),则返回true;否则返回false
示例(Python)
让我们看下面的实现以更好地理解-
class Solution(object):
def upper(self,n,target):
low = 0
high = len(n)-1
while low<high:
mid = low + (high - low + 1)//2
if n[mid] == target:
low = mid
else:
high = mid-1
return low if n[low] == target else -1
def lower(self,n,target):
low = 0
high = len(n)-1
while low < high:
mid = low + (high - low)//2
if n[mid]== target:
high = mid
else :
low = mid +1
return high if n[high] == target else -1
def isMajorityElement(self, nums, target):
u = self.upper(nums,target)
l = self.lower(nums,target)
return u-l+1 >len(nums)/2 if u != -1 else False
ob1 = Solution()print(ob1.isMajorityElement([2,4,5,5,5,5,5,6,6], 5))输入值
[2,4,5,5,5,5,5,6,6] 5
输出结果
true