多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > 框架設(shè)計(jì) > leetcode || 73、Set Matrix Zeroes

leetcode || 73、Set Matrix Zeroes

來(lái)源:程序員人生   發(fā)布時(shí)間:2015-04-30 08:29:00 閱讀次數(shù):3290次

problem:

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?

Hide Tags
 Array
題意:矩陣出現(xiàn)0,則將轉(zhuǎn)業(yè)和該列置0,注意不要講矩陣全部置0

thinking:

(1)這道題的實(shí)現(xiàn)不難,難在怎樣樣控制空間復(fù)雜度

(2)空間復(fù)雜度為O(m*n)的方法不談,太簡(jiǎn)單了。空間復(fù)雜度為O(m+n)的方法也容易實(shí)現(xiàn),單獨(dú)開兩個(gè)數(shù)組記錄行和列

(3)重點(diǎn)介紹 空間復(fù)雜度為 O(1)的方法:

這里只使用兩個(gè)BOOL  變量便可弄定

1、bool  flag_row、 flag_col分別記錄首行和首列是不是有0

2、從第2行和第2列開始遍歷,如果出現(xiàn)0,則將首行和首列的對(duì)應(yīng)位置 置0

3、2第2步完成以后,也是從第2行和第2列開始根據(jù)首行和首列信息填充0;

4、根據(jù)第1步的信息填充首行和首列

該方法是利用首行和首列來(lái)保存信息,注意首行和首列要單獨(dú)處理。

code:

class Solution { public: void setZeroes(vector<vector<int> > &matrix) { if(matrix.size()==0) return; int m=matrix.size(); int n=matrix[0].size(); bool flag_row=false; bool flag_col=false; /*先斟酌單列或單行的特殊情況*/ if(m==1) { bool flag=false; for(int i=0;i<n;i++) if(matrix[0][i]==0) flag=true; if(flag) { for(int i=0;i<n;i++) matrix[0][i]=0; } return; }//m==1 if(n==1) { bool flag=false; for(int i=0;i<m;i++) if(matrix[i][0]==0) flag=true; if(flag) { for(int i=0;i<m;i++) matrix[i][0]=0; } return; }//n==1 for(int i=0;i<m;i++)//第1列是不是有0,記錄 { if(matrix[i][0]==0) { flag_col=true; break; } } for(int j=0;j<n;j++)//第1行是不是有0,記錄 { if(matrix[0][j]==0) { flag_row=true; break; } } for(int i=1;i<m;i++) //從第2行第2列開始,如果出現(xiàn)0,將第1行和第1列的對(duì)應(yīng)位置置0 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++)//逐行檢查置0 { if(matrix[i][0]==0) { for(int j=1;j<n;j++)//從第2列開始 matrix[i][j]=0; } } for(int j=1;j<n;j++)//逐列檢查,從第2行開始 { if(matrix[0][j]==0) { for(int i=1;i<m;i++) matrix[i][j]=0; } } if(flag_col) //檢查第1列 { for(int i=0;i<m;i++) matrix[i][0]=0; } if(flag_row) //檢查第1行 { for(int j=0;j<n;j++) matrix[0][j]=0; } } };


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 国产99精品一区二区三区免费 | 亚洲高清日韩精品第一区 | 视频在线观看高清免费 | 现代激情校园春色 | 成人a毛片手机免费播放 | 亚洲欧美日韩精品久久亚洲区色播 | 性欧美高清videosex | 国产乱码精品一区二区三上 | 免费国产阿v视频在线观看 免费国产成高清人在线视频 | 午夜dj在线观看免费视频www | 精品亚洲欧美高清不卡高清 | 日本精品久久久久中文字幕8 | 亚洲一区欧美 | 欧美a在线看 | 久久精品女人毛片国产 | 99re热久久精品这里都是精品 | 手机看片国产免费久久网 | 日本aaaaa级毛片片 | 国产成人久久综合漫画 | 午夜视频免费在线播放 | 亚洲欧美精品一区 | 欧美性生交xxxxx久久久 | 一级国产20岁美女毛片 | 欧美日韩综合 | 伊人丁香婷婷综合一区二区 | 老司机一二三区福利视频 | 欧美一区二区二区 | 久久久久久国产精品免费 | 国产欧美视频一区二区三区 | 一级女性全黄生活片免费看 | xxxxx国产 | 亚洲精品国产网红在线一区 | 91久久精品国产亚洲 | 中文精品视频一区二区在线观看 | 免费看在线爱爱小视频 | 小说区图片区综合久久亚洲 | 亚洲一区二区三区免费 | 日本黄色免费大片 | 日本欧美一区二区三区视频麻豆 | 精品国产91久久久久 | 欧美午夜精品一区二区三区 |