很經典的雙指標題目
讓指標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 次。在執行上述操作後,找到包含重複字母的最長子串的長度。如果我們按序遍歷每個字元開始計算符合條件的子串長度,對於每個子串,我們只需要以它的第乙個字元為不變字元。思路簡單,清...