Ebay Interview Question
SDE-2sTeam: Traffic
Country: United States
Interview Type: In-Person
private void manipulate(int[][][] matrixArray) {
boolean[] x= new boolean[matrixArray.length];
boolean[] y= new boolean[matrixArray[0].length];
boolean[] z= new boolean[matrixArray[0][0].length];
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < y.length; j++) {
for(int k = 0; k< z.length; k++){
if (matrixArray[i][j][k] == 0) {
x[i] = true;
y[j] = true;
z[k] = true;
break;
}
}
}
}
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < y.length; j++) {
for (int k = 0; k < z.length;k++) {
if(x[i]||y[j]||z[k]){
matrixArray[i][j][k] = 0;
}
}
}
}
}
It is not correct. If matrix[i][j][k] == 0, your algorithm will set
matrix[i][*][*]=0, matrix[*][j][*]=0 and matrix[*][*][k]=0
The question asks to set
matrix[i][j][*]=0, matrix[i][*][k]=0 and matrix[*][j][k]=0
static void markZero(int[][][] m) {
- Anonymous April 25, 2014int i,j,k;
//Put all the indices of matrix that contains zero in a hashmap
for(i=0; i<m.length; i++) {
for(j=0; j<m[0].length; j++) {
for(k=0; k<m[0][0].length; k++) {
if(m[i][j][k] == 0) {
System.out.println(m[i][j][k] + " i " + i + "j " + j + "k " + k);
sb4 = new StringBuffer(sb); sb5 = new StringBuffer(sb); sb6 = new StringBuffer(sb);
sb4 = sb4.append(i);
sb4 = sb4.append(j);
sb4 = sb4.append("X");
// System.out.println(sb4);
sb5 = sb5.append(i);
sb5 = sb5.append("X");
sb5 = sb5.append(k);
// System.out.println(sb5);
sb6 = sb6.append("X");
sb6 = sb6.append(j);
sb6 = sb6.append(k);
// System.out.println(sb6);
rcd.put(sb4.toString(), 1);
rcd.put(sb5.toString(), 1);
rcd.put(sb6.toString(), 1);
}
}
}
}
Iterator<Entry<String, Integer>> it = rcd.entrySet().iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
for(i=0; i<m.length; i++) {
for(j=0; j<m[0].length; j++) {
for(k=0; k<m[0][0].length; k++) {
sb1 = new StringBuffer(sb); sb2 = new StringBuffer(sb); sb3 = new StringBuffer(sb);
sb1 = sb1.append(i);
sb1 = sb1.append(j);
sb1 = sb1.append("X");
// System.out.println(sb1);
sb2 = sb2.append(i);
sb2 = sb2.append("X");
sb2 = sb2.append(k);
// System.out.println(sb2);
sb3 = sb3.append("X");
sb3 = sb3.append(j);
sb3 = sb3.append(k);
// System.out.println(sb3);
if(rcd.containsKey(sb1.toString()) || rcd.containsKey(sb2.toString()) || rcd.containsKey(sb3.toString())) {
m[i][j][k] = 0;
// System.out.println(m[i][j][k]);
}
}
}
}
for(i=0; i<m.length; i++) {
for(j=0; j<m[0].length; j++) {
for(k=0; k<m[0][0].length; k++) {
System.out.println(m[i][j][k]);
}
}
}
}
}