Set Matrix Zeroes
生活随笔
收集整理的這篇文章主要介紹了
Set Matrix Zeroes
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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.
思路:
如果允許額外存儲行和列清零的信息,那么題目就沒有意思了。希望只用O(1)的存儲空間的時候,我們就得利用矩陣本身的存儲空間了:把清零的信息保存在第一行和第一列里。
#include<iostream> #include<vector> using namespace std; int main() {vector<vector<int>> m = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };int row = m.size();int col = m[0].size();bool frow = false;bool fcol = false;for (int i = 0; i < col; i++){if (m[0][i] == 0)frow = true;}for (int i = 0; i < row; i++){if (m[i][0] == 0)fcol = true;}//對于矩陣中的其他元素,標志所在的行和列進行標注為0 這是在第一行的元素上進行的for (int i = 1; i < row; i++){for (int j = 1; j < col; j++){if (m[i][j] == 0){m[i][0] = 0;m[0][j] = 0;}}}//現在對第一行中標注為0的行進行全部為0/*for (int i = 1; i < row; i++){if (m[i][0]==0)for (int j = 1; j < col; j++)m[i][j] == 0;}for (int i = 1; i < col; i++){if (m[0][i] == 0)for (int j = 1; j < row; j++)m[j][i] == 0;}*/for (int i = 0; i < row; i++){for (int j = 0; j < col; j++){if (m[i][0] == 0 || m[0][j] == 0)m[i][j] == 0;}}//判斷第一行元素if (frow==true)for (int i = 0; i < col; i++)m[0][i] == 0;if (fcol == true){for (int i = 0; i < row; i++)m[i][0] == true;} }
總結
以上是生活随笔為你收集整理的Set Matrix Zeroes的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab矩阵分解
- 下一篇: 十三种基于直方图的图像全局二值化算法原理