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

丑数

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)         #根据字典里面的值最大取出他的关键字

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

转载于:https://www.cnblogs.com/pythonywy/p/10917011.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值