(TIS) 20210511


中に入る。


このシリーズは誰かが読むと仮定するのではなく、自分を記録するために整理されていない.これから、私は絶えず問題を解決して、収穫を書きます.

質問する


プログラマー「124カ国の数字」:数字に関する問題


プログラマ「大数を作成」:


本当に痩せました資料構造に関する知識はあるが、運用する前に、いくつかの練習が必要らしい.
これはstackを運用する良い問題で、私は記録します.
ソース:プログラマ
コアは、「k」番号の数字を削除し、どのように数字を記録できるかです.
最初は復唱で問題を解いた.しかし、解いた後、無限リングの周りを回転し、性能もあまりよくありません.それからまた繰り返し解答して、しかし他の人の解答はとても良くて、持ってきて見ます.
「stack」を使いました.
def solution(number, k):
    stack = [number[0]]
    for num in number[1:]:
        while len(stack)>0 and stack[-1] < num and k > 0:
            stack.pop()
            k -= 1
        stack.append(num)
    
    if k != 0:
        stack = stack[:-k]
    
    return ''.join(stack)
数字を大きくするには、一番大切なのは前の位置です.
文は問題を解く核心である.kが0より大きい場合、すなわち減算可能な回数があり、今回の数字がstackの最後の数字より大きい場合は、前の数字を削除します.
またk!=まだ0文で消す機会はありますが、前にはすでに最大の組み合わせが現れています!このとき最後のk個を抜く形で行う.
-->スタックの利用可能性の問題.より多くの資料構造知識を利用してみましょう.

今日学んだこと


次のコードを使用して
  • 再帰関数の制限を解除します.
        import sys
        sys.setrecursionlimit(10**10)
  • 数学で解いたら、どうしてもやらないでください.
    ->これでは資料構造から考える能力が増すことはありません.