dog*_*d45 5 java recursion linked-list
public static Node deleteAll(Node front, String target){
if (front == null){ return null;}
if (front.data.equals(target)){
return deleteAll(front.next,target);
}
front.next=deleteAll(front.next,target);
return front;
}
Run Code Online (Sandbox Code Playgroud)
我正试图通过这个解决方案,但这让我感到困惑.为什么它不总是以null结果,因为在结尾前面将等于null.
当思考这些问题时,最好拿笔和纸画一些东西并在高层次上思考
例如
............
输入
列表:[3]-[2]-[5]-null
目标:2
............ ..
第一次调用 => 结果
deleteAll(N[3], 2) => [3]
但接下来是现在deleteAll(N[2], 2)
List = [3]-deleteAll(N[2], 2)
第二次通话
deleteAll(N[2], 2) => deleteAll(N[5], 2)
下一个节点现在跳过 2
List = [3]-deleteAll(N[5], 2)
第三次通话
deleteAll(N[5], 2) => [5]
但下一个现在是deleteAll(null, 2)
List = [3]-[5]-deleteAll(null, 2)
Lat 调用返回 null
列表最终干净,没有 2 秒
List = [3]-[5]-null
| 归档时间: |
|
| 查看次数: |
586 次 |
| 最近记录: |