最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實(shí)現(xiàn)LeetCode(73.矩陣賦零)

 更新時(shí)間:2021年07月17日 10:11:57   作者:Grandyang  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(73.矩陣賦零),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

[LeetCode] 73.Set Matrix Zeroes 矩陣賦零

Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place.

click to show follow up.

Follow up:

Did you use extra space?
A straight forward solution using O(mn) space is probably a bad idea.
A simple improvement uses O(m + n) space, but still not the best solution.
Could you devise a constant space solution?

據(jù)說這題是CareerCup上的原題,我還沒有刷CareerCup,所以不知道啦,不過這題也不算難,雖然我也是看了網(wǎng)上的解法照著寫的,但是下次遇到絕對(duì)想的起來。這道題中說的空間復(fù)雜度為O(mn)的解法自不用多說,直接新建一個(gè)和matrix等大小的矩陣,然后一行一行的掃,只要有0,就將新建的矩陣的對(duì)應(yīng)行全賦0,行掃完再掃列,然后把更新完的矩陣賦給matrix即可,這個(gè)算法的空間復(fù)雜度太高。將其優(yōu)化到O(m+n)的方法是,用一個(gè)長度為m的一維數(shù)組記錄各行中是否有0,用一個(gè)長度為n的一維數(shù)組記錄各列中是否有0,最后直接更新matrix數(shù)組即可。這道題的要求是用O(1)的空間,那么我們就不能新建數(shù)組,我們考慮就用原數(shù)組的第一行第一列來記錄各行各列是否有0.

- 先掃描第一行第一列,如果有0,則將各自的flag設(shè)置為true
- 然后掃描除去第一行第一列的整個(gè)數(shù)組,如果有0,則將對(duì)應(yīng)的第一行和第一列的數(shù)字賦0
- 再次遍歷除去第一行第一列的整個(gè)數(shù)組,如果對(duì)應(yīng)的第一行和第一列的數(shù)字有一個(gè)為0,則將當(dāng)前值賦0
- 最后根據(jù)第一行第一列的flag來更新第一行第一列

代碼如下:

class Solution {
public:
    void setZeroes(vector<vector<int> > &matrix) {
        if (matrix.empty() || matrix[0].empty()) return;
        int m = matrix.size(), n = matrix[0].size();
        bool rowZero = false, colZero = false;
        for (int i = 0; i < m; ++i) {
            if (matrix[i][0] == 0) colZero = true;
        }
        for (int i = 0; i < n; ++i) {
            if (matrix[0][i] == 0) rowZero = true;
        } 
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                if (matrix[i][j] == 0) {
                    matrix[0][j] = 0;
                    matrix[i][0] = 0;
                }
            }
        }
        for (int i = 1; i < m; ++i) {
            for (int j = 1; j < n; ++j) {
                if (matrix[0][j] == 0 || matrix[i][0] == 0) {
                    matrix[i][j] = 0;
                }
            }
        }
        if (rowZero) {
            for (int i = 0; i < n; ++i) matrix[0][i] = 0;
        }
        if (colZero) {
            for (int i = 0; i < m; ++i) matrix[i][0] = 0;
        }
    }
};

到此這篇關(guān)于C++實(shí)現(xiàn)LeetCode(73.矩陣賦零)的文章就介紹到這了,更多相關(guān)C++實(shí)現(xiàn)矩陣賦零內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • VC實(shí)現(xiàn)批量刪除指定文件的方法

    VC實(shí)現(xiàn)批量刪除指定文件的方法

    這篇文章主要介紹了VC實(shí)現(xiàn)批量刪除指定文件的方法,是一個(gè)比較普遍且實(shí)用的功能,需要的朋友可以參考下
    2014-07-07
  • 使用C++實(shí)現(xiàn)工資管理中的隨機(jī)教師信息生成功能

    使用C++實(shí)現(xiàn)工資管理中的隨機(jī)教師信息生成功能

    這篇文章主要介紹了使用C++實(shí)現(xiàn)工資管理中的隨機(jī)教師信息生成功能,想要做一個(gè)教師工資管理系統(tǒng),就必須得準(zhǔn)備好數(shù)據(jù),但是這些數(shù)據(jù)如果用手一行一行地敲,那么工作量是非常大的,因此,我就產(chǎn)生了用C語言實(shí)現(xiàn)直接生成大量的教師基本信息的想法,需要的朋友可以參考下
    2023-05-05
  • C語言實(shí)現(xiàn)Floyd算法

    C語言實(shí)現(xiàn)Floyd算法

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)Floyd算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C++基于隨機(jī)數(shù)實(shí)現(xiàn)福彩雙色球的方法示例

    C++基于隨機(jī)數(shù)實(shí)現(xiàn)福彩雙色球的方法示例

    這篇文章主要介紹了C++基于隨機(jī)數(shù)實(shí)現(xiàn)福彩雙色球的方法,結(jié)合完整實(shí)例形式分析了C++隨機(jī)數(shù)算法的實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-06-06
  • C/C++中異常處理詳解及其作用介紹

    C/C++中異常處理詳解及其作用介紹

    這篇文章主要介紹了C/C++中異常處理詳解及其作用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • C++中的STL中map用法詳解(零基礎(chǔ)入門)

    C++中的STL中map用法詳解(零基礎(chǔ)入門)

    map在編程中是經(jīng)常使用的一個(gè)容器,本文來講解一下STL中的map,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C語言繪制余弦、正弦曲線

    C語言繪制余弦、正弦曲線

    這篇文章主要為大家詳細(xì)介紹了C語言繪制余弦、正弦曲線的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • C語言版三子棋小游戲

    C語言版三子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言版三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言實(shí)現(xiàn)密碼程序

    C語言實(shí)現(xiàn)密碼程序

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)密碼程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • 用C語言完整實(shí)現(xiàn)2048游戲

    用C語言完整實(shí)現(xiàn)2048游戲

    2048是一款數(shù)字益智游戲,初始數(shù)字則是由2+2組成的基數(shù)4。在操作方面的不同則表現(xiàn)為一步一格的移動(dòng),變成更為爽快的一次到底。相同數(shù)字的方?jīng)r在靠攏、相撞時(shí)會(huì)相加。系統(tǒng)給予的數(shù)字方塊不是2就是4,玩家要想辦法在這小小的16格范圍中湊出2048這個(gè)數(shù)字方塊
    2021-11-11

最新評(píng)論

莎车县| 任丘市| 新平| 普兰县| 阳城县| 闵行区| 湄潭县| 夹江县| 青川县| 宜城市| 台山市| 武功县| 九龙坡区| 玛沁县| 崇左市| 安陆市| 通渭县| 北海市| 常州市| 丽水市| 长阳| 南溪县| 临海市| 东台市| 古浪县| 铜鼓县| 博湖县| 贵德县| 会昌县| 格尔木市| 房山区| 栖霞市| 当涂县| 麻栗坡县| 富裕县| 双桥区| 尉氏县| 富宁县| 海淀区| 温州市| 大冶市|