<分区>
我正在研究我的算法解决技巧,但我在解决这个 O(1) 内存复杂度的问题时遇到了麻烦。
问题陈述:
给定一个整数数组,您的任务是将多数数打印到标准输出 (stdout)。 如果一个数字在大小为 N 的数组中出现超过 N/2 次,则认为它是多数。 注意:如果没有数字是多数,则打印“无” 预期复杂度:O(N) 时间,O(1) 内存
示例输入:
1 1 2 3 4 1 6 1 7 1 1
示例输出:
1
示例输入:
1 2 2 3
示例输出:
None
这是我的代码。我相信这是 O(n) 时间(如果我错了请纠正我),但这看起来不像 O(1) 内存。如何实现 O(n) 时间和 O(1) 内存?
def majority(v):
nums={}
for num in v:
if num in nums:
nums[num]+=1
else: nums[num]=1
maxcount=['None',0]
for num in nums:
if nums[num] > maxcount[1] and nums[num] > len(v)/2:
maxcount[0] = num
maxcount[1]=nums[num]
print maxcount[0]