算功@LeetCode:MajorityElement

2017-04-18  本文已影响19人  苏尚君

Log

题目

Majority Element

【题目类型备注】

数组, 分治法, 位操作

提交

01

【语言】

Python

【时间】

170417

【思路】

既然主元素数量超过一半,那么当数组有序后,该元素在数组中的连续长度必定超过数组总长的 1/2。

因此只要让数组有序,再取下标为 n/2 的元素即可

【代码】

class Solution(object):
    def majorityElement(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        arr = sorted(nums)
        return arr[len(nums)/2]

【结果】

运行时:58 ms

报告链接:https://leetcode.com/submissions/detail/100362952/

不知道其他拥有 LeetCode 帐号的人能不能看到该报告,所以顺便附图如下:

Your runtime beats 87.70% of python submissions.

其实我本来想写分治法的(因为最开始就是通过「分治法」的分类找到这题),但实在想不出来分治法的解法。于是观察到了这个特点。没想到速度还挺快。

00

参考解法:

自己实现一遍最优解:

上一篇 下一篇

猜你喜欢

热点阅读