力扣題目彙總(醜數,重複N的元素,求衆數)

醜數

1.題目描述

  1. 編寫一個程序判斷給定的數是否爲醜數。python

    醜數就是隻包含質因數 2, 3, 5正整數數組

    示例 1:app

    輸入: 6
    輸出: true
    解釋: 6 = 2 × 3

示例 2:函數

輸入: 8
輸出: true
解釋: 8 = 2 × 2 × 2

示例 3:code

輸入: 14
輸出: false 
解釋: 14 不是醜數,由於它包含了另一個質因數 7。

說明:element

  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 的二維矩陣表示一個圖像。leetcode

將圖像順時針旋轉 90 度。get

說明:it

你必須在原地旋轉圖像,這意味着你須要直接修改輸入的二維矩陣。請不要使用另外一個矩陣來旋轉圖像。io

**示例 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)         #根據字典裏面的值最大取出他的關鍵字

`有更加好的思路,或者解題方法評論區留言謝謝

相關文章
相關標籤/搜索