【ダブルポインター】まとめ

元の配列に基づいて、特別なデータを処理するために新しいスペースが追加されることはありません。この場合、ダブルポインタが使用されます。
一般的なテンプレートは次のとおりです。

def process(nums,*condition):
	j, n = 0, len(nums)
	for i in range(n):
		if 条件不满足:
			nums[j] = nums[i]
			# 有时也将两者进行调换
			# nums[j], nums[i] = nums[i], nums[j]
			j += 1
	return nums[:j] #数组前j个数即为处理好的新数组 

リンク リスト トピック
リンク リストの最後の N 番目のノードを削除する
長さがわからないと、最後の N 番目のノードを決定することはできません。
しかし、最後の N 番目のノードと最後のノードの差は N-1 ノードであり、この時点ではダブル ポインタを使用できることは明らかです。
高速ポインタが最初に N-1 ステップ進むようにすると、高速ポインタが最後のノードを訪問するときに、低速ポインタは最後から 2 番目の N 番目のノードを訪問するだけになります。

リンク リストの交差 交差
するノードは不明ですが、最後から 2 番目の N 番目のノードのアイデアを使用できます。2つのリンクリストの端を揃えて、同時にアクセスできるように
下からN番目のノード(Nは短いリンクリストの長さ)からアクセスします。

おすすめ

転載: blog.csdn.net/LoveJSH/article/details/128951372