コード:会話、ヒアリング、作文-1


03/22/2022


さかのぼる


遡及:BFS、DFSなどの完全なナビゲーションを効率的にします.つまり、すべてを見なければならない.→ブルートフォスとは差が少ない.しかし一度訪れた場所は、行かないために効果的に作る方法です.不要な部分を枝切りにして、時間の複雑さを減らします.

木。


根と横たわる木のように見える階層化された非線形資料構造.
by Hanghae99

by Pythonアルゴリズムインタビュー

高さ=現在位置+リーフ
深度=ルートノード+現在のノード

Diagnol traverse


https://leetcode.com/problems/diagonal-traverse/

問題を見ると、
これは逆順を書くべきように見えます.私から見ればこれは規則的だ.対角線上下方向うん.
まず最初から何行何列か知っておく必要があります.2つのForゲートを返してこそ、チームの中からそれぞれの価値を引き出すことができるのではないでしょうか…?
そして、偶数の対角線ごとに対角線の下降が見られます.
2(0,1)、4(1,0)->インデックスと1
3(0、2)、5(1、1)7(2、0)->インデックスと等しい2
それからInputの価格を考えてみます.まず3 x 3行列です.
対角線の数を考えるべきだと思います.そうしてこそ数値化できるここには5つありますでは、4 x 4にはいくつ登場しますか?対角線数=M+N-1
def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:
	    num_rows = len(mat) # 행의 길이
        num_cols = len(mat[0]) #열의 길이
        diagonals = [[] for _ in range(num_rows + num_cols - 1)] #대각선 갯수로 리스트 만들어 주기
        
        for i in range(num_rows):
            for j in range(num_cols):
                diagonals[i+j].append(mat[i][j])
                #대각선 만들어준 리스트에다가 값들 일단 저장. 키값 밸류값 이렇게. 키값은 인덱스합들로 분류.
        
        res = diagonals[0] # 1
        
        for x in range(1, len(diagonals)):
            if x % 2 == 1: #인덱스를 갖고 2로 나누어지면 역순, 아니면 정순으로 해준다 그러고 리턴!
                res.extend(diagonals[x])
            else:
                res.extend(diagonals[x][::-1])
        return res
このように編んだコードが解ける考えが一番私に合っていて、私が求めている非常に直感的なコードです.私もあまり上手ではありませんが、forドアに詰まっています.今日私は問題をして、私は本当に細部に欠けているような気がします.文法を正しく理解していないからなのか、それとも自分で考える能力が足りないからなのか.改善するためには、どうやって近づくか、どうやって解放するかを考え続ける力を創造しなければならない.不足

バイナリツリーの最大深さ


https://leetcode.com/problems/maximum-depth-of-binary-tree/

問題を見ると、
なんだろう…?Inputにnullがあるのを見てこれは明らかにあちらのカウントダウンしない感じです枝が二つに分かれているので左右の感じがしますその前にどうやってその根をどこかで会ったことがありますが、彼はよく耳で枝を伸ばしていると言っていました.うん.そして私から見れば、BFSに行きます.DFSの感覚ではなく幅探索の感覚を3->9->20の順で行うのでこれは間違いない.では、BFSを書くという意味はQueueを書くという意味で、これを書く意味は大きく必要です.ではwhile大体の感覚:
ルートノードを初期化します.
読み込むDeck初期化.
while<詰める場所:
ナスを作成する関数(?):
条件が満たされている場合はreft=
条件を満たす場合、光源=
リターンバーを作成する関数(?)
.
.
.
そうなのか…
悩んだ後...トゥート川を見て一人でフンフン...
def test_max_depth(lst):
    if not root:
        return 0

    q = deque([root])
    depth = 0

    while q:
        depth += 1
        for _ in range(len(q)):
            cur = q.popleft()
            if cur.left:
                q.append(cur.left)
            if cur.right:
                q.append(cur.right)

    return depth
感じが悪くない...まず、大体構造が似ているようです.でも、落ちてきたのは細部.Deckを使用してキューを使用して初期化します.そしてdepthというポケットを作ってカウントダウンするものを作ります次にwhile文を作成し、キューに任意の値を返し、depth 1を増やします.そしてfor文を作成これ以上考えられなかった繰り返しqの長さ...これはちょっと難しいです.親ノードの長さを返します.それからキューをキューから出して、左か右か見て、forドアを出て、whileドアに入ります.for文の役割は、親ノードが存在するかどうかを確認し、サブノードが左ノードか右ノードかを確認することです.Qの長さから回るとIn Footの長さと同じ...そんなことを考えていない.このように問題訪問を練習し続けると、すぐに実現するでしょう.