元の配列に基づいて、特別なデータを処理するために新しいスペースが追加されることはありません。この場合、ダブルポインタが使用されます。
一般的なテンプレートは次のとおりです。
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は短いリンクリストの長さ)からアクセスします。