2020-11-22 23:53
门头沟学院 golang 0 点赞 评论 收藏
分享
A1L3N:排序后11123,如果当前到了num[3](第一个2)或num[4](第一个3)的时候肯定不用判断之前有没有用过,所以只用在num[i]=num[i-1]时判断。 这个时候如果mark[i-1]为true,因为代码只有在遍历过但还没有回溯的时候mark[i-1]才会为true,所以为true只会是上一层的选择而不影响本层、即本层选择这个在排序后重复的值是实际上第一次在这一层遍历这个值。 如果mark[i-1]=false但是却已经到了num[i]这个值了只能说明mark[i-1]不是上一层使用的而是同一层前一个循环使用的,即前一次循环已经选择过了本次直接跳过。 本次跳过后本次的mark[i]一直保持为false,这样到了mark[i+1]也能同理辨别出本层是否已经选择过了
0 点赞 评论 收藏
分享
CtrlCVEngineer:关于新增的判断条件的解释是不是不太对,每次while循环,四个指针都做一次自增/减运算,例子中right-1应该等于0吧,我觉得可以理解成当顶和底相等的时候,从左往右和从右往左只需依次一次遍历就行了,不加判断条件的话就会反过来遍历一次。
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
关注他的用户也关注了: