丑数
1.题目描述
-
编写一个程序判断给定的数是否为丑数。
丑数就是只包含质因数
2, 3, 5
的正整数。示例 1:
输入: 6 输出: true 解释: 6 = 2 × 3
示例 2:
输入: 8
输出: true
解释: 8 = 2 × 2 × 2
示例 3:
输入: 14
输出: false
解释: 14 不是丑数,因为它包含了另外一个质因数 7。
说明:
-
1
是丑数。 - 输入不会超过 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
提示:
4 <= A.length <= 10000
0 <= A[i] < 10000
-
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) #根据字典里面的值最大取出他的关键字