题解 | #合并k个已排序的链表#

合并k个已排序的链表

https://www.nowcoder.com/practice/65cfde9e5b9b4cf2b6bafa5f3ef33fa6


    public ListNode mergeKLists (List<ListNode> lists) {
     
		//先把空的元素剔除
        for (int i = 0; i < lists.Count; i++) {
            if (lists[i] == null) {
                lists.RemoveAt(i);
                i--;
            }
        }
		//全空就返回0
        if (lists.Count == 0) {
            return null;
        }
	  	//就一个元素就返回这个元素头
        if (lists.Count < 1) {
            return lists[0];
        }
	  	//给新的链表来一个虚拟头
        ListNode VirtualHead = new ListNode(0);
		//这里表示新链表的最新的一个节点
	  ListNode NowPtr = VirtualHead;

	  //用序号来表示集合中最小的元素的位置
	  int GetMin = 0;
		//当集合元素为空时,意味着排序完成了
        while (lists.Count != 0) {
			//进行多轮选择,每轮到一个就拿来和GetMin位置上的元素进行比较,值小的那个用来就把序号赋值给GetMin
            for (int i = 0; i < lists.Count; i++) {
                if (lists[i].val < lists[GetMin].val) {
                    GetMin = i;
                }
            }
		  //进行到最后没有元素了就退出来
            if (lists.Count == 0) {
                break;
            }
            NowPtr.next = lists[GetMin];
            NowPtr = NowPtr.next;
            lists[GetMin] = lists[GetMin].next;
            if (lists[GetMin] == null) {
                lists.RemoveAt(GetMin);
                GetMin = 0;
            }

        }


        return VirtualHead.next;
        // write code here
    }

全部评论

相关推荐

学习java也有半年多了,现在准备秋招试一试,不行的话就再实习一段准备春招,大佬们帮忙看看简历呗,感觉很多笔试做的还行但是还是挂了,是不是简历有问题啊
应欢欢yhh:我打算实习和秋招一起找了。名企秋招还是太难了,中小公司就没有秋招一说吧,基本上都是实习转正的offer。我想如果先找到实习我就去,在刷一段实习经历,在这个过程中同步投秋招。
我的简历长这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务