LeetCode 54 - スパイラルマトリックス

ブラシタイトルエラー時に学校の募集

1.後にACが問題にGithubのにアップロード

ブラッシングをまとめた簡単に忘れ反映していない、非常に低コストで、解決策は、他の人々が彼らの真の消化を理解して意味するものではありません、ただその前に見提出ACを覚えていますが、考え方は完全に覚えていません。後/週/月隔週、最近ACホワイトボードプログラムの見直しの対象とし、旧の確認、検査基準の対象は、ホワイトボードのバグのないACが行われます。

テストケースの2種類が完全に覆われていません

スティック防御性编程質問が良いの行ベクトル、列ベクトル、行列、一般的な行列よりも考慮することがバインドされているので、これらのカテゴリのどれを検討するために、コーナーケースをアップ。また、トピック、対称性を持っているよりも、このような質問の潜在的なポイントを掘ります。

まとめとリフレクション

自分のACソリューション
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> result = new ArrayList<>();
        if (matrix == null || matrix.length == 0) {
            return result;
        }
        int m = matrix.length, n = matrix[0].length;
        for (int k = 0; k < (Math.min(m, n) + 1) / 2; ++k) {
            int j = 0;
            for (j = k; j < n - k; ++j) {
                result.add(matrix[k][j]);
            }
            for (j = k + 1; j < m - k; ++j) {
                result.add(matrix[j][n - k - 1]);
            }
            if (m - k - 1 > k) {
                for (j = n - k - 2; j >= k; --j) {
                    result.add(matrix[m - k - 1][j]);
                }
            }
            if (n - k - 1 > k){
                for (j = m - k - 2; j > k; --j) {
                    result.add(matrix[j][k]);
                }
            }
        }
        return result;
    }
}
ソリューションの九章
class Solution {
    public List<Integer> spiralOrder(int[][] matrix) {
        List<Integer> result = new ArrayList<>();
        if (matrix == null || matrix.length == 0) {
            return result;
        }
        int m = matrix.length, n = matrix[0].length;
        int x = 0, y = 0;
        while (m > 0 && n > 0) {
            if (m == 1) {
                for (int i = 0; i < n; ++i) {
                    result.add(matrix[x][y++]);
                }
                break;
            } else if (n == 1) {
                for (int i = 0; i < m; ++i) {
                    result.add(matrix[x++][y]);
                }
                break;
            }
            for (int i = 0; i < n - 1; ++i) {
                result.add(matrix[x][y++]);
            }
            for (int i = 0; i < m - 1; ++i) {
                result.add(matrix[x++][y]);
            }
            for (int i = 0; i < n - 1; ++i) {
                result.add(matrix[x][y--]);
            }
            for (int i = 0; i < m - 1; ++i) {
                result.add(matrix[x--][y]);
            }
            x++;
            y++;
            m = m - 2;
            n = n - 2;
        }
        return result;
    }
}
まとめとリフレクション

彼は法律に書かれたコードを観察することにより、ACコードより短く、より多くの部外者のように書きましたが。アルゴリズムの九章は、よりを通して、計算の考え方に沿ったものです バツ (X、Y) によって、始点座標を記録します メートル メートル n個 n個 簡単に書き込みバグのないとのインタビューでステップ数を制御します。忘れられたインタビューの際に自身のコード F もし 直接アップGG。

また、インタビューの中で悪魔/珍しいアイデアのいくつかを覚えていることは危険である、ではないすべての面接官は、事業開発の面接の会社のラインのほとんどが一時的なもので、Pony.ai ACM偉大な神がそこに座っているように、あなたはすぐにアイデアを理解することができます準備が整いました。プレイ安全なので、マスター一般的な考え方は、最初に選択することです。

公開された11元の記事 ウォンの賞賛2 ビュー667

おすすめ

転載: blog.csdn.net/liheng301/article/details/104946578