66. 加一
给定一个表示 大整数 的整数数组 digits
,其中 digits[i]
是整数的第 i
位数字。这些数字按从左到右,从最高位到最低位排列。这个大整数不包含任何前导 0
。
将大整数加 1,并返回结果的数字数组。
class Solution(object):
def plusOne(self, digits):
"""
:type digits: List[int]
:rtype: List[int]
"""
a=""
b = []
c= 0
for i in digits:
a+=str(i)
c = int(a) +1
for i in str(c):
b.append(int(i))
return b
1957. 删除字符使字符串变好
一个字符串如果没有 三个连续 相同字符,那么它就是一个 好字符串 。
给你一个字符串 s
,请你从 s
删除 最少 的字符,使它变成一个 好字符串 。
请你返回删除后的字符串。题目数据保证答案总是 唯一的 。
class Solution(object):
def makeFancyString(self, s):
"""
:type s: str
:rtype: str
"""
res = ""
for i in range(len(s)):
if i>1:
if s[i] == s[i-1] and s[i] == s[i-2]:
pass
else:
res +=s[i]
else:
res +=s[i]
return res
1695. 删除子数组的最大得分
给你一个正整数数组 nums
,请你从中删除一个含有 若干不同元素 的子数组。删除子数组的 得分 就是子数组各元素之 和 。
返回 只删除一个 子数组可获得的 最大得分 。
如果数组 b
是数组 a
的一个连续子序列,即如果它等于 a[l],a[l+1],...,a[r]
,那么它就是 a
的一个子数组。
class Solution(object):
def maximumUniqueSubarray(self, nums):
current_sum = 0
max_sum = 0
seen = set()#初始化一个空集合,记录当前窗口内的元素(用于去重),什么都没有
left = 0
for right in range(len(nums)):
while nums[right] in seen:
seen.remove(nums[left])
current_sum -= nums[left]
left += 1
seen.add(nums[right])
current_sum += nums[right]
max_sum = max(max_sum,current_sum)
"""
nums: [4, 2, 4, 5, 6]
index: 0 1 2 3 4
↑ ↑
left right
seen = {2, 4}
left 默认为第一个元素,right 从第一个开始遍历
默认将right 遍历的nums 的元素 添加进set创建的空集合里
当nums[right] 遍历到一个元素已经存在在set创建的空集合里
也就是说出现了重复的元素并且这个这个元素与nums[left]重复
seen.remove(nums[left]) 删除旧的重复的元素
举例子就是 当nums[right]遍历到nums[2] 时值为4 但是与nums[left]也就是nums[0]重复
使用seen.remove(nums[left]) 删除掉set创造的集合里的nums[0] 也就是seen[0]
使得 seen = {4, 2} --> seen = {2, 4}
然后left++ 继续循环
"""
return max_sum
Comments NOTHING