@cxm-2016
2016-12-27T10:02:25.000000Z
字数 758
阅读 1975
算法
版本:2
作者:陈小默
声明:禁止商业,禁止转载
题目:有两个有序链表,我们需要打印出两个链表的公共部分。
比如:
A-> 0,1,2,3,6,7,8
B-> 1,3,4,6,8,9,10
打印 1,3,6,8
思路,谁小谁先走
data class Node(var value: Int, var next: Node?)fun printCommonPart(head1: Node?, head2: Node?) {var h1: Node? = head1var h2: Node? = head2while (h1 != null && h2 != null) {if (h1.value < h2.value)h1 = h1.nextelse if (h2.value < h1.value)h2 = h2.nextelse {println(h1.value)h1 = h1.nexth2 = h2.next}}}fun main(args: Array<String>) {var head1: Node? = nullvar head2: Node? = nullvar node: Node? = nullintArrayOf(1, 3, 4, 6, 7, 8, 9).forEach { num ->if (head1 == null) {head1 = Node(num, null)node = head1} else {node!!.next = Node(num, null)node = node!!.next}}intArrayOf(2, 4, 5, 6, 7, 8).forEach { num ->if (head2 == null) {head2 = Node(num, null)node = head2} else {node!!.next = Node(num, null)node = node!!.next}}printCommonPart(head1, head2)}
