每次五个题~
1313.解压缩编码列表
给你一个以行程长度编码压缩的整数列表 nums 。
考虑每相邻两个元素 [a, b] = [nums[2*i], nums[2*i+1]] (其中 i >= 0
),每一对都表示解压后有 a 个值为 b 的元素。
请你返回解压后的列表。
输入:nums = [1,2,3,4]
输出:[2,4,4,4]
思路:
- 什么是行程长度编码;
例如AAAADDD可以压缩为4A3D。
- 对输入数组每次步进 2 值进行取值
我的解法:
class Solution:
def decompressRLElist(self, nums: List[int]) -> List[int]:
new = []
for i in range(0, len(nums), 2):
j = nums[i]
while j > 0:
j = j - 1
new.append(nums[i + 1])
return new
更好的解法:
class Solution:
def decompressRLElist(self, nums: List[int]) -> List[int]:
decompress = []
for i in range(1, len(nums), 2):
decompress += [nums[i],] * nums[i-1]
return decompress
LCP 1. 猜数字
小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?
输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。
示例1:
输入:guess = [1,2,3], answer = [1,2,3]
输出:3
解释:小A 每次都猜对了。
思路:
循环或者枚举三次list的值进行比较即可
我的解法:
class Solution:
def game(self, guess: List[int], answer: List[int]) -> int:
roundwin = 0
for i in range(3):
if guess[i] == answer[i]:
roundwin += 1
return roundwin
或者?:
return sum(guess[i]==answer[i] for i in range(len(guess)))
1295. 统计位数为偶数的数字
给你一个整数数组 nums
,请你返回其中位数为 偶数 的数字的个数。
示例 1:
输入:nums = [12,345,2,6,7896]
输出:2
解释:
12 是 2 位数字(位数为偶数)
345 是 3 位数字(位数为奇数)
2 是 1 位数字(位数为奇数)
6 是 1 位数字(位数为奇数)
7896 是 4 位数字(位数为偶数)
因此只有 12 和 7896 是位数为偶数的数字
思路:
枚举数组中的整数,以此判断x是否包含偶数个数字
将整数转换为字符串,用len函数获取str的长度
我的解法:
class Solution:
def findNumbers(self, nums: List[int]) -> int:
return sum(1 for num in nums if len(str(num)) % 2 == 0)
771. 宝石与石头
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
示例 1:
输入: J = "aA", S = "aAAbbbb"
输出: 3
思路:
遍历每一块石头检查是不是宝石
我的解法:
class Solutions:
def numJewelsInStones(self, J, S):
count = 0
length_J = len(J)
for i in range(length_J):
count += S.count(J[i])
return count
?解法:
将stone存入字典,用J进行查询
dic = dict()
for i in S:
dic[i] = dic.get(i, 0) + 1
sum = 0
for i in range(len(J)):
if J[i] in S:
sum+=dic[J[i]]
return sum
1281. 整数的各位积和之差
给你一个整数 n
,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。
示例
输入:n = 234
输出:15
解释:
各位数之积 = 2 * 3 * 4 = 24
各位数之和 = 2 + 3 + 4 = 9
结果 = 24 - 9 = 15
思路:
将取出各位数字进行计算即可
解法将n转化为str方便取值,但是花费了更多的内存空间,不可取
class Solution:
def subtractProductAndSum(self, n: int) -> int:
n_str = str(n)
length = len(n_str)
sum = 0
G = 1
for i in range(length):
sum += int(n_str[i])
G *= int(n_str[i])
return G - sum
更好的解法:
class Solution:
def subtractProductAndSum(self, n: int) -> int:
add, mul = 0, 1
while n > 0:
digit = n % 10
n //= 10
add += digit
mul *= digit
return mul - add
class Solution:
def subtractProductAndSum(self, n: int) -> int:
nList = list(str(n))
a,b = 1,0
for i in nList:
a *= int(i)
b += int(i)
return a-b
版权属于:秋
本文链接:https://blog.lyneee.com/16.html
本站文章采用 知识共享署名4.0 国际许可协议 进行许可,请在转载时注明出处及本声明!