雙指標
#21.py
#輸入乙個整數陣列,實現乙個函式來調整該陣列中數字的順序,使得所有奇數字於陣列的前半部分,所有偶數字於陣列的後半部分。
class
solution
:def
exchange
(self, nums: list[
int])-
> list[
int]
: j=
len(nums)-1
i=0while iif nums[i]%2
==0:if nums[j]%2
==0: j=j-
1continue
else
: nums[i]
,nums[j]
=nums[j]
,nums[i]
i=i+
1return nums
class
solution
:def
findnumberin2darray
(self, matrix: list[list[
int]
], target:
int)
->
bool:if
len(matrix)==0
:return
false
i=0 j=
len(matrix[0]
)-1while i<
len(matrix)
and j>=0:
if matrix[i]
[j]i+=
1elif matrix[i]
[j]>target:
j-=1else
:return
true
return
false
#57.py
```python3
# 輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。
# 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
# 示例 1:
# 輸入:target = 9
# 輸出:[[2,3,4],[4,5]]
# 示例 2:
# 輸入:target = 15
# 輸出:[[1,2,3,4,5],[4,5,6],[7,8]]
class
solution
:def
twosum
(self, nums: list[
int]
, target:
int)
-> list[
int]
: i=
0 j=
len(nums)-1
while iif nums[i]
+nums[j]
>target:
j-=1elif nums[i]
+nums[j]
i+=1else
:return
[nums[i]
,nums[j]
]
#57_2.py
# 輸入乙個正整數 target ,輸出所有和為 target 的連續正整數序列(至少含有兩個數)。
# 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。
# 示例 1:
# 輸入:target = 9
# 輸出:[[2,3,4],[4,5]]
# 示例 2:
# 輸入:target = 15
# 輸出:[[1,2,3,4,5],[4,5,6],[7,8]]
class
solution
:def
findcontinuoussequence
(self, target:
int)
-> list[list[
int]]:
nums=
[i for i in
range(1
,target+1)
] res=
i=target//
2 start=
2while i>=
0and start<=target//2+
1:ifsum
(nums[i:i+start]
)==target:
) i=i-
1 start+=1if
sum(nums[i:i+start]
)>target:
i=i-1if
sum(nums[i:i+start]
)start+=
1return
sorted
(res)
劍指offer 雙指標專題
很經典的雙指標題目 讓指標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 cl...
劍指offer 雙棧形成佇列
class myqueue public void push int x stack1.push x 要考慮stack2的元素還沒有都取出去,就又新push新的元素的情況 public intpop return stack2.pop 這裡要考慮的情況是,如果stack2的資料如果都取出去了,然後又...
劍指offer 雙指標 58 I 翻轉單詞順序
時間複雜度 o n 空間複雜度 o 1 class solution reverse s.begin s.end 去除首尾的空格 int k 0 while k s.size s k k int j s.size 1 while j 0 s j j return s.substr k,j k 1 自...