本帖最后由 jackz007 于 2024-12-9 00:28 编辑
这个题的思路是,设置一个主元素变量 major 及其计数器 count,用变量 each 循环遍历 nums[] 中的每一个元素,当 count 为 0 时,把 each 设置为 major,同时,count 置 1;当 count > 0 时,分两种情况,如果 each 与 major 相同,则 count + 1,否则,count - 1,到 count = 0 时,major 重新赋值。很显然,正常情况下,一个 major 如果能坚持到最后(count 不被归 0),其数量应该超过 nums[] 元素的一半,这就是存在主要元素的情况。当然,这样统计也不能排除某一个仅仅具有相对数量优势的元素也有可能成为 major,但是,其数量并不足以超过 nums[] 元素的一半,像这种就属于 "不存在主要元素。" 的情况。
其实,这道题的代码可以更加简单:nums = [2, 2, 4, 2, 3, 6, 2]
nums . sort()
print("主要元素是:", nums[len(nums) // 2]) if nums . count(nums[len(nums) // 2]) > len(nums) // 2 else print("不存在主要元素。")
其思路为:对 nums[] 按照数值从小到大的顺序排序,如果 nums[] 有主要元素,其位置一定在新 nums[] 的中间部位,其数量应该超过 nums[] 元素的一半。
|