1. Java 二维数组初始化:
(a) int d[][] = {{-1,0},{0,-1},{1,0},{0,1}};
(b) boolean visited[][] = new boolean[m][n];
(c) boolean visited[][];
visited= new boolean[m][n];
2.二维数组赋值
for(int s=0; s<m; s++){
Arrays.fill(visited[s], false);
}
3.执行 ssh -add ~/.ssh/id_ras时报错`Could not open a connection to your authentication agent`
执行如下命令 ssh-agent bash
然后再执行 ssh-add ~/.ssh/id_ras 即可。
4. git 常用命令:
git切换分支:git checkout 分支名
拉取:git pull
提交;git push
5.git指南:
6.79. 单词搜索
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。
单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
解题思路:对整个二维数组进行递归遍历,使用辅助方向数组d[4][2]来表示四个方向的遍历,使用intArea()方法来判断是否越界,使用二维数组visited来表示当前元素是否被访问。
class Solution {
//方向数组
int d[][] = {{-1,0},{0,-1},{1,0},{0,1}};
int m,n;
boolean visited[][];
public boolean exist(char[][] board, String word) {
m = board.length;
n = board[0].length;
visited= new boolean[m][n];
for(int s=0; s<m; s++){
Arrays.fill(visited[s], false);
}
for(int i=0; i<board.length; i++){
for(int j=0; j<board[0].length; j++){
if(findW(board, word, 0, i, j)){
return true;
}
}
}
return false;
}
public boolean inArea(int newx, int newy){
return newx>=0 && newx<m && newy>=0 && newy<n;
}
public boolean findW(char[][] board, String word, int index, int startx, int starty){
if(index == word.length()-1){
return word.charAt(index) == board[startx][starty];
}
if(board[startx][starty]==word.charAt(index)){
int newx, newy;
visited[startx][starty] = true;
for(int p=0; p<4; p++){
newx = startx+d[p][0];
newy = starty+d[p][1];
if(inArea(newx, newy) && !visited[newx][newy] && findW(board, word, index+1, newx, newy)){
return true;
}
}
visited[startx][starty] = false;
}
return false;
}
}