力扣题目汇总(丑数,重复N的元素,求众数

发布时间:2019-06-07 20:35:07编辑:auto阅读(1990)

    丑数

    1.题目描述

    1. 编写一个程序判断给定的数是否为丑数。

      丑数就是只包含质因数 2, 3, 5正整数

      示例 1:

      输入: 6
      输出: true
      解释: 6 = 2 × 3

    示例 2:

    输入: 8
    输出: true
    解释: 8 = 2 × 2 × 2

    示例 3:

    输入: 14
    输出: false 
    解释: 14 不是丑数,因为它包含了另外一个质因数 7。

    说明:

    1. 1 是丑数。
    2. 输入不会超过 32 位有符号整数的范围: [−231, 231 − 1]。

    2.解题思路

    从题目描述上将,是判断一个数是否能被,2,3,5除,然后被这几个数除会余数肯定为0,而且除到最后他会变成1

    3.解题

    class Solution:
        def isUgly(self, num: int) -> bool:
            if num == 0:
                return False
            div = [2, 3, 5]
            for x in div:
                while num % x == 0:
                    num /= x
            return num == 1

    重复 N 次的元素

    1.题目描述

    给定一个 n × n 的二维矩阵表示一个图像。

    将图像顺时针旋转 90 度。

    说明:

    你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。

    **示例 1:在大小为 2N 的数组 A 中有 N+1 个不同的元素,其中有一个元素重复了 N 次。

    返回重复了 N 次的那个元素。

    示例 1:

    输入:[1,2,3,3]
    输出:3

    示例 2:

    输入:[2,1,2,5,3,2]
    输出:2

    示例 3:

    输入:[5,1,5,2,5,3,5,4]
    输出:5

    提示:

    1. 4 <= A.length <= 10000
    2. 0 <= A[i] < 10000
    3. A.length 为偶数

    2.解题思路

    #方法1 用list内置函数.count 进行计数
    #把里面的元素变成字典,根据字典进行计数

    3.解题

    class Solution:
        def repeatedNTimes(self, A: List[int]) -> int:
            #方法1
            # A_1 = set(A)
            # A_1 = list(A_1)
            # for a in A_1:
            #     if A.count(a) == len(A)/2:
            #         return a
            #         break
            # 超时
            #方法二
            dic = {}
            for a in A:
                if a not in dic:
                    dic[a]=1              #把里面数字生成字典的KEY并且计数为1
                else:
                    dic[a]+=1            #把里面的数字每碰到相同的加1
            num = len(A)/2
            for b in dic:
                if dic[b] == num:
                    return b
                    break

    求众数

    1题目描述

      • 给定一个大小为 n 的数组,找到其中的众数。众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

        你可以假设数组是非空的,并且给定的数组总是存在众数。

        示例 1:

        输入: [3,2,3]
        输出: 3

        示例 2:

        输入: [2,2,1,1,1,2,2]
        输出: 2

    2.解题思路

    方法1:根据list进行count进行计数
    方法2:生成字典

    3.解题

    class Solution:
        def majorityElement(self, nums: List[int]) -> int:
            #方法1
            # new_list = []
            # for a in nums:
            #     if nums.count(a) >len(nums)/2:
            #         new_list.append(a)
            # return max(set(new_list))
            #超时
            #方法二
            dic = {}
            for a in nums:
                if a not in dic :
                    dic[a] = 1
                else:
                    dic[a] += 1
            return max(dic,key=dic.get)         #根据字典里面的值最大取出他的关键字

    `有更加好的思路,或者解题方法评论区留言谢谢

关键字