zoukankan      html  css  js  c++  java
  • 力扣题目汇总(丑数,重复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.解题思路
    
    ```python
    从题目描述上将,是判断一个数是否能被,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)         #根据字典里面的值最大取出他的关键字
    

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

  • 相关阅读:
    Ubuntu
    VSCode
    VSCode
    Astyle
    Qt
    待办
    Qt
    Qt
    Qt
    python pip常用命令、配置pip源
  • 原文地址:https://www.cnblogs.com/pythonywy/p/10917011.html
Copyright © 2011-2022 走看看