У этого кода есть несколько проблем.
Во-первых, производительность:
int diagonalSum(vector<vector<int> > matrix) {
Приведенный выше код копирует матрицу со всеми ее элементами каждый раз, когда вы вызываете функцию, без видимой причины.Сложность: O (n 2 ).
Лучше передать по ссылке на const (сложность O (1)):
int diagonalSum(const vector<vector<int> > & matrix) {
Затем код пытается скопироватьобъект итератора от matrix.begin()
, который должен перебирать объекты типа vector<int>
и пытается назначить этот итератор в целочисленную переменную.Целое число и итератор имеют несовместимые типы и не могут быть назначены друг другу, и, следовательно, ошибка.
Полагаю, вы хотели использовать вместо этого индекс:
for(int i = 0;i < matrix.size();i++)
{
for(int j = 0; j < matrix[i].size();j++)
И даже это плохое решение с точки зрения сложности.Ваше решение - O (n 2 ), где ваша задача может быть легко выполнена за O (n) одним циклом.