(TIS) 20210513

7042 ワード

Still Level 2


プログラマ「ペアリング削除」


スタックを利用すると簡単に解決できます

プログラマ「プリンタ」


queue形式で解くのは難しくない
また、dequeを使用するとパフォーマンスが少し向上します.

プログラマ「小数を検索」


置換により可能な場合を求め,素数数数と判別する.他の人の解答を見て、「エラトスのふるい」という少数の判別法も分かった.

プログラマ「かっこ変換」


これはKakao Brainの問題です一般的な括弧問題よりも、問題の指示事項をよく読むことがポイントです!また、「(」と「)」のみからなる括弧文字列については、2つの括弧の数が等しいと仮定すると、特殊な性質を有すると判断できます.!!

プログラマー「株価」


スタックを使用して解凍できます.私は列挙と比較の方法で行います.

プログラマーのジョイスティック


簡単そうに見えますが、左右移動の最適化部分に苦労しました.
1時間半もぶつかって失敗...とても憂鬱です...夜にもう一度やってみる

プログラマー「次の大きな数字」


うん.結論から言うとちょっとおかしい.
質問する
问题を见ると思い出してしまうのは、当然、与えられた数字よりも一つ一つ育て、2進数変換后の1つの数が等しいときに返す方式です...でもなぜか分からない?もちろん、コードは無知に見えるので、違う方法で書きました(数学的な感じ?).私のコードはこうです.
def solution(n):
    b = format(n, 'b')
    c = b.count('1')
    
    if len(b) - c == 0:
        return n - 2**(len(b)-1) + 2 **(len(b))
    elif c == 1:
        return n * 2
    elif b.startswith('1'*c):
        return 2 ** (len(b)) + 2 ** (c-1)-1
    else:
        return 2 **(len(b)-1) + solution(int(b[1:], 2))
終了条件を設定した後、その整数で再帰的に返される関数.
しかし、1つの文を作成した后に何の考えもなく1回の複文の性能が最も良いことを発见します...
def solution(n):
    for num in range(n+1, 1000001):
        if c == format(num, 'b').count('1'):
            return num
うーん、ちょっと考えてみると、結果はいつも百万回で終わるので、もちろんかなり速いコードですが、文章を書きたくないので、そうします...
コードを修正する前に何かアイデアを思いつくなら、アイデアの時間の複雑さから考える習慣を身につけましょう.

プログラマー「カーペット」


これは数学の問題にすぎない.それを二次方程式として公式を作ることができます.私はただドアを回すためです.

プログラマ「最大数」OK


昨日解決できなかった問題に再挑戦しました.今回はinsert sortを使って問題を解いてみました.結果を見て...アルゴリズムは正しいが、時間がかかりすぎるようだ.エラーのテストはすべてタイムアウトしたからです.
後で...3回目の试みで疲れました.問題を解くといろいろ勉強になりますが、私の精神のために、また別の問題に挑戦します.

プログラマー「H-Index」硬化


H-Indexの背景知識があまりないので、ちょっと迷っています.重要なことは,答えとしての値を与えられた引用数に含めず,論文の数字を起点として計算すべきである.
  • は、nより大きい要素の個数も必要である.考えたらリストを並べて数えます.indexとうまく組み合わせて使うと、とても強い!
  • プログラマー「数字の表現」


    これはあまり難しくない問題です.

    プログラマー「救命ボート」の強さ


    簡単なアイデアで実現しました...能率的に時間がかかった.
    2つ目の実装方法はダブルポインタです!この方法で簡単に解決しました...まだプログラミングの思考に完全に慣れていないようです...
    助かりました!!!

    プログラマー「ブリッジトラック」


    あまり難しくないです.queueのポイントはdequeを利用することです.