[关闭]
@cxm-2016 2016-12-19T09:07:44.000000Z 字数 723 阅读 1782

算法:删除无序链表中值重复的节点

算法

版本:2
作者:陈小默
声明:禁止商业,禁止转载

如题所属,删除一个链表中值重复出现的节点。

思路:在有限空间复杂度的情况下,我们可以采取遍历删除的方式。

  1. data class Node(var value: Int, var next: Node?) {
  2. override fun toString(): String {
  3. val builder = StringBuilder().append('[')
  4. var node: Node? = this.next
  5. builder.append(value)
  6. while (node != null) {
  7. builder.append(',').append('\t').append(node.value)
  8. node = node.next
  9. }
  10. return builder.append(']').toString()
  11. }
  12. }
  13. fun delete(node: Node?) {
  14. node ?: return
  15. val delete = node.next
  16. if (delete != null) {
  17. node.next = delete.next
  18. delete.next = null
  19. } else node.next = null
  20. }
  21. fun deleteRepeated(head: Node) {
  22. var index: Node? = head
  23. var node: Node?
  24. var value: Int
  25. while (index != null) {
  26. value = index.value
  27. node = index
  28. while (node != null) {
  29. while (node.next != null && value == node.next!!.value) delete(node)
  30. node = node.next
  31. }
  32. index = index.next
  33. }
  34. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注