記錄了初步解題思路 以及本地實(shí)現(xiàn)代碼;并不一定為最優(yōu) 也希望大家能一起探討 一起進(jìn)步
8/7 344. 反轉(zhuǎn)字符串
雙指針
def reverseString(s):
"""
:type s: List[str]
:rtype: None Do not return anything, modify s in-place instead.
"""
l,r=0,len(s)-1
while l<r:
s[l],s[r]=s[r],s[l]
l+=1
r-=1
8/8 1749. 任意子數(shù)組和的絕對(duì)值的最大值
記錄最小值 最大值
def maxAbsoluteSum(nums):
"""
:type nums: List[int]
:rtype: int
"""
n = len(nums)
ans = 0
minv,maxv = 0,0
r = 0
while r<n:
minv+=nums[r]
maxv+=nums[r]
if maxv>0:
ans = max(ans,maxv)
else:
maxv = 0
if minv<0:
ans = max(ans,-minv)
else:
minv = 0
r+=1
return ans
8/9 1281. 整數(shù)的各位積和之差
按要求計(jì)算
def subtractProductAndSum(n):
"""
:type n: int
:rtype: int
"""
a,b = 1,0
while n>0:
v = n%10
a *= v
b += v
n//=10
return a-b
8/10 1289. 下降路徑最小和 II
從上到下遍歷每一行
在每一行中記錄最小值和次小值 及其位置
下一行使用到的必定只有這兩個(gè)值
def minFallingPathSum(grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
n = len(grid)
first,second = (float("inf"),-1),(float("inf"),-1)
for i in range(n):
one,two = float("inf"),float("inf")
f,s = -1,-1
for j in range(n):
cur = grid[i][j]
if i!=0:
if j==first[1]:
cur+=second[0]
else:
cur+=first[0]
if cur<one:
two = one
one = cur
f = j
elif cur<two:
two = cur
s=j
first = (one,f)
second = (two,s)
return first[0]
8/11 1572. 矩陣對(duì)角線元素的和
計(jì)算每行需要累加的數(shù)位置
def diagonalSum(mat):
"""
:type mat: List[List[int]]
:rtype: int
"""
ans = 0
n= len(mat)
for i in range(n):
ans += mat[i][i]
j = n-1-i
if i!=j:
ans+=mat[i][j]
return ans
8/12 23. 合并 K 個(gè)升序鏈表
將每個(gè)鏈表當(dāng)前值放入小頂堆中
依次取堆中最小值 并將下一個(gè)節(jié)點(diǎn)放入文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-650003.html
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def mergeKLists(lists):
"""
:type lists: List[ListNode]
:rtype: ListNode
"""
import heapq
h = ListNode(0)
cur = h
l = []
n = len(lists)
for i in range(n):
if lists[i]:
heapq.heappush(l, (lists[i].val,i))
lists[i]=lists[i].next
while l:
v,idx = heapq.heappop(l)
cur.next = ListNode(v)
cur = cur.next
if lists[idx]:
heapq.heappush(l,(lists[idx].val,idx))
lists[idx]=lists[idx].next
return h.next
8/13 88. 合并兩個(gè)有序數(shù)組
從大到小考慮文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-650003.html
def merge(nums1, m, nums2, n):
"""
:type nums1: List[int]
:type m: int
:type nums2: List[int]
:type n: int
:rtype: None Do not return anything, modify nums1 in-place instead.
"""
cur = m+n-1
l,r=m-1,n-1
while r>=0:
while l>=0 and nums1[l]>nums2[r]:
nums1[cur],nums1[l]=nums1[l],nums1[cur]
cur-=1
l-=1
nums1[cur],nums2[r]=nums2[r],nums1[cur]
cur-=1
r-=1
到了這里,關(guān)于LeetCode 每日一題 2023/8/7-2023/8/13的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!