本专栏主要记录力扣的刷题记录,备战蓝桥杯,供复盘和优化算法使用,也希望给大家带来帮助,博主是算法小白,希望各位大佬不要见笑,今天要分享的是——《412. Fizz Buzz、414. 第三大的数、415. 字符串相加》。
412. Fizz Buzz
题目描述
给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer (下标从 1 开始)返回结果,其中:
answer[i] == "FizzBuzz" 如果 i 同时是 3 和 5 的倍数。
answer[i] == "Fizz" 如果 i 是 3 的倍数。
answer[i] == "Buzz" 如果 i 是 5 的倍数。
answer[i] == i (以字符串形式)如果上述条件全不满足。
示例 1:
输入:n = 3 输出:["1","2","Fizz"]
示例 2:
输入:n = 5 输出:["1","2","Fizz","4","Buzz"]
示例 3:
输入:n = 15 输出:["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]
解题思路
这一题思路还是很清晰的,用一个for循环去遍历1-n之间的整数,对5和3进行取模运算,如果余数为0的话说明能够除尽,在目标列表中添加对应的元素,直到遍历完全,最后返回这个列表。
解题代码
def fizzBuzz(n: int):
target_list = []
for i in range(1,n+1):
if i % 3 == 0 and i % 5 == 0:
target_list.append("FizzBuzz")
elif i % 3 == 0:
target_list.append("Fizz")
elif i % 5 == 0:
target_list.append("Buzz")
else:
target_list.append(str(i))
return target_list
414. 第三大的数
题目描述
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
示例 1:
输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。
示例 2:
输入:[1, 2] 输出:2 解释:第三大的数不存在, 所以返回最大的数 2 。
示例 3:
输入:[2, 2, 3, 1] 输出:1 解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。 此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。
解题思路
首先通过集合转列表的方式去除列表中重复的元素,再判断一下转化之后的列表长度是不是小于3,如果是返回列表最大值,如果不是,对列表进行 降序排序,返回第三大的元素。
解题代码
def thirdMax(nums):
nums_list = list(set(nums))
if len(nums_list) < 3:
return max(nums_list)
else:
nums_list.sort(reverse=1)
return nums_list[2]
415. 字符串相加
题目描述
给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和并同样以字符串形式返回。
你不能使用任何內建的用于处理大整数的库(比如 BigInteger ), 也不能直接将输入的字符串转换为整数形式。
示例 1:
输入:num1 = "11", num2 = "123" 输出:"134"
示例 2:
输入:num1 = "456", num2 = "77" 输出:"533"
示例 3:
输入:num1 = "0", num2 = "0" 输出:"0"
解题思路
使用eval可以对字符串直接相加,不过不知道eval能不能用啊,可以先试一下,用eval相加之后转成str型,返回结果。
解题代码
def addStrings(num1: str, num2: str):
result = eval(num1)+eval(num2)
return str(result)
直接转int也能通关,看来力扣的检测方法没办法检测str转int。