【发布时间】:2019-03-03 21:29:48
【问题描述】:
我在一本面试准备书中遇到了一个棘手的问题。 您有一个包含整数 1 到 9 的 3 x 3 矩阵,如下所示
1 2 3
4 5 6
7 8 9
如何获得唯一的 7 位数字组合,其中第一个数字都以 4 开头(矩阵 [1] [0])。遍历就像棋盘上的车一样。水平或垂直方向的一种方式...(顺便说一句,拥有 4125874 是有效的 7 位组合)。
我尝试编写一些代码并在此处使用布尔访问标志进行常规 2D 矩阵遍历以获得答案并将每个组合存储在 hashSet 中以确保唯一性,但我被卡住了。任何类型的 cmets、提示和代码修订都可以让我的代码正常工作。
class Ideone
{
void dfs(int[][] matrix, boolean visited) //considered dfs with a boolean visited flag but I am stuck. I want to make my solution recursive
{
boolean visited = false;
}
public static HashSet<String> get7DigitCombo(int[][] matrix)
{
String result = "";
int[][] cache = matrix.clone();
Set<String> comboSet = new HashSet<String>();
boolean visited = false;
int resultStart = matrix[1][0];
for(int row = 1; row < matrix.length; row++)
{
for(int col = 0; col < matrix[0].length; col++)
{
if (visited == false & result.length < 7)
{
result += "" + (matrix[row + 1][col] || matrix[row -1][col] || matrix[row][col+1] || matrix[row][col-1]);
}
}
}
comboSet.add(result);
return comboSet;
}
public static void main (String[] args) throws java.lang.Exception
{
// your code goes here
int[][] matrix = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
};
HashSet<String> comboSet = get7DigitCombo(matrix);
System.out.print(comboSet);
}
}
【问题讨论】:
标签: multidimensional-array hashset depth-first-search