Linkedin Interview Question
Senior Software Development EngineersCountry: United States
Should it not be like this:
vector<int> dimension = getDim();
//subtract 1 from every dimension to use as index
for (int idx = 0; idx < dimension.size(); idx++) {
dimension[idx]--;
}
//use as the array of index pass to getElement
vector<int> idxV = dimension;
long retSum = 0;
while(true) {
int idx = 0;
//update index array
while(true) {
//all iteration are done. return sum
if (idx >= dimension.size())
return retSum;
if (idxV[idx] == 0) {
idxV[idx] = dimension[idx];
idx++;
} else {
break;
}
}
retSum += getElement(idxV);
idxV[idx]--; // so that the last elem is taken in?
}
recusive solution in c++
int sumMatrix(Matrix m) {
vector<int> dim = m.getDim();
vector<int> index;
return partialSum(m, dim, index);
}
int partialSum(Matrix &m, vector<int> &dim, vector<int> &index) {
int currDim = index.size();
if (currDim == dim.size())
return m.getElem(index);
int sum = 0;
for(int i = 0; i < dim[currDim]; i++) {
index.push_back(i);
sum += partialSum(m, dim, index);
index.pop_back();
}
return sum;
}
c++ solution
use an array as index of a multi-base on different digit number
- leochen40505 May 27, 2019