47主元素
题目
给定一个整型数组,找出主元素,它在数组中的出现次数严格大于数组元素个数的二分之一。
注意事项
You may assume that the array is non-empty and the majority number always exist in the array.
样例
给出数组[1,1,1,1,2,2,2],返回 1
思路
- 它最多只存在一个主元素
- 先顺序排序
- 对第一个元素重复元素统计为j,下一个元素位置在原来基础上+j.
- 重复步骤3,一旦发现j>len(数组)/2,退出返回这个数组元素。
代码
class Solution:
"""
@param nums: A list of integers
@return: The majority number
"""
def majorityNumber(self, nums):
# write your code here
n=len(nums)/2
nums.sort()
i=0;j=0
while i<=len(nums):
j=nums.count(nums[i])
if j>n:
return nums[i]
i+=j
47主元素 II
题目
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的三分之一。
注意事项
数组中只有唯一的主元素
样例
给出数组[1,2,1,2,1,3,3] 返回 1
思路
思路差不多 就是判断主元素条件,“严格大于数组元素个数的三分之一”的处理。
代码
class Solution:
"""
@param nums: A list of integers
@param k: As described
@return: The majority number
"""
def majorityNumber(self, nums):
# write your code here
nums.sort()
i=0;j=0
while i<=len(nums):
j=nums.count(nums[i])
if j>len(nums)//3:
return nums[i]
i+=j
return
48主元素 III
题目
给定一个整型数组,找到主元素,它在数组中的出现次数严格大于数组元素个数的1/k。
注意事项
数组中只有唯一的主元素
样例
给出数组 [3,1,2,3,2,3,3,4,4,4] ,和 k = 3,返回 3
代码
class Solution:
"""
@param nums: A list of integers
@param k: As described
@return: The majority number
"""
def majorityNumber(self, nums, k):
# write your code here
nums.sort()
i=0;j=0
while i<=len(nums):
j=nums.count(nums[i])
if j>len(nums)//k:
return nums[i]
i+=j
return