[Greedy]ジャージ




📌 制限事項は重要な問題だ.これを見逃すと、コードをよく修正しても4-50分の行方が失われます.🕊

方法


主論理自体は簡単です.reserveリストを巡回すると、要素-1/+1の値が欠落リストに存在するかどうかを確認し、要素を削除できます.そして全長からlossリストの最終個数を返すと完成!
しかし、その前に、制限事項を考慮してリストを作成する必要があります.
1.重複除外
2.損失と保存の間で重複除外を実行
1番は明示的です.2つ目は最後の制限から引き出すことができます.運動服を余った学生が盗まれたのは、その学生が運動服を借りることができないからだ.

最終コード

def solution(n, lost, reserve):
    _reserve = set(reserve)-set(lost)
    _lost = set(lost)-set(reserve)
    
    for r in _reserve:
        if r-1 in _lost:
            _lost.remove(r-1)
        elif r+1 in _lost:
            _lost.remove(r+1)
            
    return n-len(_lost)
👉 setを用いて1番条件を満たし,2つのset間の差集演算により2番条件も満たされた