仅以此纪录每日LeetCode所刷题目。
题目描述:
示例:
思路:
这道题的测试用例给出的长度很短,所以不用考虑到会超时。因此我们可以列举出所有“()”的可能性。因为“+”会将字符串分成两部分,括号会将两部分分成四部分,因此我们将分割后的四部分分别命名为(ABCD),记得出的结果为A*(B+C)*D,依次计算,返回最小值所对应的字符串即可。
代码:
class Solution:
def minimizeResult(self, expression: str) -> str:
if len(expression) == 3:
return "("+expression+")"
list1 = expression.split('+')
a = list1[0]
b = list1[1]
res = []
res1 = []
a_len = len(a)
b_len = len(b)
for i in range(a_len):
a_q = a[:i]
a_h = a[i:]
# print(a_h)
for j in range(1,b_len+1):
b_q = b[:j]
b_h = b[j:]
if a_q == '' and b_h == "":
res.append(int(a_h) + int(b_q))
res1.append("(" + a_h + "+" + b_q + ")")
elif a_q == "" :
res.append((int(a_h) + int(b_q)) * int(b_h))
res1.append("(" + a_h + "+" + b_q + ")" + b_h)
elif b_h == "" :
res.append((int(a_h) + int(b_q)) * int(a_q))
res1.append(a_q + "(" + a_h + "+" + b_q + ")")
elif a_q != "" and b_h != "":
res.append((int(a_h) + int(b_q)) * int(a_q) * int(b_h))
res1.append(a_q + "(" + a_h + "+" + b_q + ")" + b_h)
return res1[res.index(sorted(res)[0])]
题目描述:
示例:
思路:
这道题我们需要每次在当前nums列表中的最小元素+1,才能得到结果的最大值。
因为假设我们给元素X加上一,让总乘积变成了
因此X越小,收益越大。
这道题我们需要用到python中的heapq库来建立小根堆。之后我会单独写一篇博客介绍heapq库。
代码:
class Solution:
def maximumProduct(self, nums: List[int], k: int) -> int:
heapify(nums)
while k > 0:
heapreplace(nums, nums[0] + 1)
k -= 1
res = 1
for num in nums:
res = res * num % (10 ** 9 + 7)
return res