01.01.05 练习题目(第 02 天)
1. 1480. 一维数组的动态和
1.1 题目大意
描述:给定一个数组 n u m s nums nums。
要求:返回数组 n u m s nums nums 的动态和。
说明:
- 动态和:数组前 i i i 项元素和构成的数组,计算公式为 r u n n i n g S u m [ i ] = ∑ x = 0 x = i ( n u m s [ i ] ) runningSum[i] = \sum_{x = 0}^{x = i}(nums[i]) runningSum[i]=∑x=0x=i(nums[i])。
- 1 ≤ n u m s . l e n g t h ≤ 1000 1 \le nums.length \le 1000 1≤nums.length≤1000。
- − 1 0 6 ≤ n u m s [ i ] ≤ 1 0 6 -10^6 \le nums[i] \le 10^6 −106≤nums[i]≤106。
示例:
- 示例 1:
输入:nums = [1,2,3,4]
输出:[1,3,6,10]
解释:动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4]。
- 示例 2:
输入:nums = [1,1,1,1,1]
输出:[1,2,3,4,5]
解释:动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1]。
解题思路:
该题思路在上述解释中已经清晰的展示出,不需要过多赘述,因为使用python解题,应尽量使代码简洁。可以通过列表表达式来解题,因为数组中的第一个元素是不需要改变的,所以我们使用切片,直接选择后面的元素。按照题目要求不难判断出满足
- f(n) = f(n - 1) + n (n >0)
- f(0) = 1
题解
class Solution(object):
def runningSum(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
nums[1:] = [nums[i] + sum(nums[:i]) for i in range(1,len(nums))]
return nums
2. 0709. 转换成小写字母
2.1 题目大意
描述:给定一个字符串 s s s。
要求:将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。
说明:
- 1 ≤ s . l e n g t h ≤ 100 1 \le s.length \le 100 1≤s.length≤100。
- s s s 由 ASCII 字符集中的可打印字符组成。
示例:
- 示例 1:
输入:s = "Hello"
输出:"hello"
- 示例 2:
输入:s = "LOVELY"
输出:"lovely"
解题思路:
我们可以通过遍历,然后根据ASCLL码的映射关系来改变字符串的大小写格式
但是python中提供了内置函数帮我们解决这一问题,个人认为在使用python的过程中,能更简洁的代码可以选择更简洁的做法,摒弃掉一些实现细节的考虑
题解:
class Solution(object):
def toLowerCase(self, s):
"""
:type s: str
:rtype: str
"""
return s.lower()
3. 1672. 最富有客户的资产总量
3.1 题目大意
描述:给定一个 m × n m \times n m×n 的整数网格 a c c o u n t s accounts accounts,其中 a c c o u n t s [ i ] [ j ] accounts[i][j] accounts[i][j] 是第 i i i 位客户在第 j j j 家银行托管的资产数量。
要求:返回最富有客户所拥有的资产总量。
说明:
- 客户的资产总量:指的是他们在各家银行托管的资产数量之和。
- 最富有客户:资产总量最大的客户。
- m = = a c c o u n t s . l e n g t h m == accounts.length m==accounts.length。
- n = = a c c o u n t s [ i ] . l e n g t h n == accounts[i].length n==accounts[i].length。
- 1 ≤ m , n ≤ 50 1 \le m, n \le 50 1≤m,n≤50。
- 1 ≤ a c c o u n t s [ i ] [ j ] ≤ 100 1 \le accounts[i][j] \le 100 1≤accounts[i][j]≤100。
示例:
- 示例 1:
输入:accounts = [[1,2,3],[3,2,1]]
输出:6
解释:
第 1 位客户的资产总量 = 1 + 2 + 3 = 6
第 2 位客户的资产总量 = 3 + 2 + 1 = 6
两位客户都是最富有的,资产总量都是 6 ,所以返回 6。
- 示例 2:
输入:accounts = [[1,5],[7,3],[3,5]]
输出:10
解释:
第 1 位客户的资产总量 = 6
第 2 位客户的资产总量 = 10
第 3 位客户的资产总量 = 8
第 2 位客户是最富有的,资产总量是 10,所以返回 10。
解题思路
该题可以很明显的看到是二维数组中求和最大的一维数组。可以通过遍历计算每个一维数组的和进行比较。python中提供了sum()函数和max()函数可以帮助我们简化代码
题解
class Solution(object):
def maximumWealth(self, accounts):
"""
:type accounts: List[List[int]]
:rtype: int
"""
return max([sum(i) for i in accounts])