检查数字是否是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
以上是 检查数字是否是Python中排序数组中的多数元素 的全部内容, 来源链接: utcz.com/z/331081.html