From 3af727af8518c5e54ab9df480de60535ac657ab9 Mon Sep 17 00:00:00 2001 From: Kaushik Narayan R Date: Tue, 10 Oct 2023 11:49:59 -0700 Subject: [PATCH] day 13: 73-set-matrix-zeroes --- 73-set-matrix-zeroes/driver.cpp | 18 ++++++++++++++ 73-set-matrix-zeroes/soln.cpp | 42 +++++++++++++++++++++++++++++++++ 73-set-matrix-zeroes/soln.hpp | 10 ++++++++ 3 files changed, 70 insertions(+) create mode 100644 73-set-matrix-zeroes/driver.cpp create mode 100644 73-set-matrix-zeroes/soln.cpp create mode 100644 73-set-matrix-zeroes/soln.hpp diff --git a/73-set-matrix-zeroes/driver.cpp b/73-set-matrix-zeroes/driver.cpp new file mode 100644 index 0000000..69c93b4 --- /dev/null +++ b/73-set-matrix-zeroes/driver.cpp @@ -0,0 +1,18 @@ +#include "soln.hpp" + +int main() { + // [[1,1,1],[1,0,1],[1,1,1]] + vector v1 = vector{0,1,1}; + vector v2 = vector{1,1,1}; + vector v3 = vector{1,1,1}; + + vector v_1 = vector{0,0,0}; + vector v_2 = vector{0,1,1}; + vector v_3 = vector{0,1,1}; + + vector> matrix = vector>{v1,v2,v3}; + vector> answer = vector>{v_1,v_2,v_3}; + Solution soln; + cout << "Set zeroes correctly? " << soln.test(matrix, answer) << endl; + return 0; +} \ No newline at end of file diff --git a/73-set-matrix-zeroes/soln.cpp b/73-set-matrix-zeroes/soln.cpp new file mode 100644 index 0000000..fba00f4 --- /dev/null +++ b/73-set-matrix-zeroes/soln.cpp @@ -0,0 +1,42 @@ +#include "soln.hpp" + +void Solution::setZero(vector> &matrix, int row, int column) +{ + // set row to 0s + for (int i = 0; i < matrix[0].size(); i++) + { + matrix[row][i] = 0; + } + // set column to 0s + for (int i = 0; i < matrix.size(); i++) + { + matrix[i][column] = 0; + } +} + +void Solution::setZeroes(vector> &matrix) +{ + vector> marks; + // for every row + for (int i = 0; i < matrix.size(); i++) + { + // for every column + for (int j = 0; j < matrix[0].size(); j++) + { + if (matrix[i][j] == 0) + { + marks.push_back(pair{i, j}); + } + } + } + for (auto it : marks) + { + setZero(matrix, it.first, it.second); + } +} + +bool Solution::test(vector> &matrix, vector>& answer) { + vector> mat_copy = vector>(matrix); + setZeroes(mat_copy); + return mat_copy == answer; +} \ No newline at end of file diff --git a/73-set-matrix-zeroes/soln.hpp b/73-set-matrix-zeroes/soln.hpp new file mode 100644 index 0000000..098d483 --- /dev/null +++ b/73-set-matrix-zeroes/soln.hpp @@ -0,0 +1,10 @@ +#include +using namespace std; + +class Solution +{ +public: + void setZero(vector> &matrix, int row, int column); + void setZeroes(vector> &matrix); + bool test(vector> &matrix, vector> &answer); +};