劍指offer 雙指標專題

2021-10-09 19:16:28 字數 1296 閱讀 5783

很經典的雙指標題目

讓指標pt_1 先走k步,pt_2出發。這樣當pt_1達到末尾時,pt_2剛好走到倒數第k個。

# definition for singly-linked list.

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

class

solution

:def

getkthfromend

(self, head: listnode, k:

int)

-> listnode:

pt_1, pt_2 = listnode(

), listnode(

) pt_1.

next

, pt_2.

next

= head, head

for _ in

range

(k):

pt_1 = pt_1.

next

while pt_1:

pt_1 = pt_1.

next

pt_2 = pt_2.

next

return pt_2

也是乙個雙指標的題目。用的是左右指標:

class

solution

:def

lengthoflongestsubstring

(self, s:

str)

->

int:

l, res =0,

0 dic = collections.defaultdict(

lambda:0

)for r in

range

(len

(s))

:while dic[s[r]]!=

0:dic[s[l]]-=

1 l +=

1 dic[s[r]]+=

1 res =

max(res, r-l+1)

return res

collections.defaultdict(lambda: 0)可以直接用dic[x]讀取x位的值,如果key x不存在,則直接返回預設值。這樣能夠避免不存在的錯誤。

也可以用普通的dic.get(x, 0)來解決同樣的問題。

劍指offer 雙指標

雙指標 21.py 輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。class solution def exchange self,nums list int list int j len nums 1 i 0while iif ...

leetcode 劍指 Offer 專題(七)

劍指 offer 專題第七部。題目 劍指 offer 66.構建乘積陣列。定義 begin v 1 i prod a k a 0 times a 1 times dots times a i 1 quad v 1 0 1 v 2 i prod a k a i 1 times dots times a...

雙指標專題

424.替換後的最長重複字元 給你乙個僅由大寫英文本母組成的字串,你可以將任意位置上的字元替換成另外的字元,總共可最多替換 k 次。在執行上述操作後,找到包含重複字母的最長子串的長度。如果我們按序遍歷每個字元開始計算符合條件的子串長度,對於每個子串,我們只需要以它的第乙個字元為不變字元。思路簡單,清...