2019-08-18 18:33
浙江大学 牛客245113885号:您好,您的代码里面visited矩阵新建的位置不对,如果是全局公用一个visited矩阵的话,如果存在多个头结点起始位置并且多个头结点起始的路径都可以经过相同的点的话,那么那个点只可以对第一个访问该点的路径起效,之后访问该点的路径由于未访问时该点的visited矩阵中已经为true,所以此时就不会再访问,可能导致某些结果本应该为true结果返回false。应该将visited放在两层for循环之内,每次重新开始一个新的节点就新建一个visited矩阵。
0 点赞 评论 收藏
分享
农夫酸酸乳:在您的答案稍加改动,可以看一下 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 点赞 评论 收藏
分享
关注他的用户也关注了: