初憶 level
获赞
244
粉丝
0
关注
0
看过 TA
1
浙江大学
2020
IP属地:上海
暂未填写个人简介
私信
关注
2019-08-18 18:33
浙江大学
矩阵中的路径 题目描述:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"abccee"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。 首先看到这个题目,思路很明确,使用DFS递归的回溯剪枝思想,即添加一些判断条件使得程序不再递归下去。首先对于matrix中的每...
牛客245113885号:您好,您的代码里面visited矩阵新建的位置不对,如果是全局公用一个visited矩阵的话,如果存在多个头结点起始位置并且多个头结点起始的路径都可以经过相同的点的话,那么那个点只可以对第一个访问该点的路径起效,之后访问该点的路径由于未访问时该点的visited矩阵中已经为true,所以此时就不会再访问,可能导致某些结果本应该为true结果返回false。应该将visited放在两层for循环之内,每次重新开始一个新的节点就新建一个visited矩阵。
0 点赞 评论 收藏
分享
2019-08-11 10:57
已编辑
浙江大学
把数组排成最小的数 第一种方法:耗时21ms 由题可知我们需要对数组中的数进行排序。那么排序需要满足满足什么规则呢?首先,我们并不能直接用(o1,o2)->o2.compareTo(o1),因为很明显当数字一样大时长度并不能作为排序的依据。该题的正确解法为短的字符串循环与长的字符串作比较,代码如下: public String PrintMinNumber(int [] numbers) { ArrayList<String> arrayList = new ArrayList<String>(); for(int i : numb...
农夫酸酸乳:在您的答案稍加改动,可以看一下 public String PrintMinNumber(int [] numbers) {         ArrayList<String> arrayList = new ArrayList<String>();         for(int i : numbers){             arrayList.add( i + "" );         }         Collections.sort(arrayList, new Comparator<String>() {                          public int compare(String o1, String o2) {                 int i = 0, j = 0;                 while(i < o1.length() && j < o2.length()){                     if(o1.charAt(i) < o2.charAt(j)){                         return -1;                     }else if(o1.charAt(i) > o2.charAt(j)){                         return 1;                     }                     i++; j++;                 }                 while(i < o1.length()){//2到达了终点                     if(j==o2.length()) j-=o2.length();                     if(o1.charAt(i) < o2.charAt(j)){                         return -1;                     }else if(o1.charAt(i) > o2.charAt(j)){                         return 1;                     }                     i++;j++;                 }                 while(j < o2.length()){                     if(i==o1.length()) i-=o1.length();                     if(o1.charAt(i) < o2.charAt(j)){                         return -1;                     }else if(o1.charAt(i) > o2.charAt(j)){                         return 1;                     }                     i++;j++;                 }                 return 0;             }         });         StringBuilder stringBuilder2 = new StringBuilder();         for(String s : arrayList){             stringBuilder2.append(s);         }         return stringBuilder2.toString();     } }
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务