思路:
在百度知道上面有个人是这么回答的:
1:设置一个BO0L性变量 res=true;
2:读每个单向链表的第一个字符 *a,*b
3:*a=*b?next():res=false;
4:继续到2;
我觉得吧,对于像int short等比较好比较的类型的链表,我直接先排序然后再比较。如果是String类型的,也可以操作,比如按照字符的大小进行排序然后在比较,这样也可以。如果是自定义类型的链表,比如 List<User>,这个时候可以自定义排序的方法,比如按照User ID或者username进行排序。
如果不进行排序,那么只能进行n * m次比较了。其中n m分别为两个链表的size
我觉得百度知道上面的这个人的回答有问题。
不知道还有没有更加好一点的方法。我觉得应该有~
要是能够难道这本书的答案就好了。
PS@10-09-25 16:55
将每个节点加入到一颗树里面,要是是平衡树就最好了。每个树节点包括加入的次数以及是从第一个链表还是第二个链表加入进来的。
最后进行一次遍历即可。
在百度知道上面有个人是这么回答的:
1:设置一个BO0L性变量 res=true;
2:读每个单向链表的第一个字符 *a,*b
3:*a=*b?next():res=false;
4:继续到2;
我觉得吧,对于像int short等比较好比较的类型的链表,我直接先排序然后再比较。如果是String类型的,也可以操作,比如按照字符的大小进行排序然后在比较,这样也可以。如果是自定义类型的链表,比如 List<User>,这个时候可以自定义排序的方法,比如按照User ID或者username进行排序。
如果不进行排序,那么只能进行n * m次比较了。其中n m分别为两个链表的size
我觉得百度知道上面的这个人的回答有问题。
不知道还有没有更加好一点的方法。我觉得应该有~
要是能够难道这本书的答案就好了。
PS@10-09-25 16:55
将每个节点加入到一颗树里面,要是是平衡树就最好了。每个树节点包括加入的次数以及是从第一个链表还是第二个链表加入进来的。
最后进行一次遍历即可。