Algorithm
合并K个排序链表
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。
示例:输入:
[
1->4->5,
1->3->4,
2->6
]
输出: 1->1->2->3->4->4->5->6
解题思路:链表两两合并
public ListNode mergeKLists(ListNode[] lists) {
ListNode result = null;
for (int i = 0 ; i<lists.length;i++){
result = twoMergeLists(result,lists[i]);
}
return result;
}
public ListNode twoMergeLists(ListNode node1, ListNode node2) {
if(node1 == null){
return node2;
}
if(node2 == null){
return node1;
}
ListNode head = new ListNode(0);
ListNode tail = head;
ListNode item1 = node1;
ListNode item2 = node2;
while(item1 != null && item2 != null){
if(item1.val <= item2.val ){
tail.next = item1;
item1 = item1.next;
}else{
tail.next = item2;
item2 = item2.next;
}
tail = tail.next;
}
if(item1 != null ){
tail.next = item1;
}
if(item2 != null ){
tail.next = item2;
}
return head.next;
}
Review
具有产品思维的软件工程师
1、积极主动对待产品理念或观点
2、对商业、用户和数据感兴趣
3、好奇和对为什么感兴趣
4、良好的沟通能力和与非工程师的良好关系
5、提前提供产品和工程的这种方案
6、务实的处理边界情况
7、快速的产品验证周期
8、端对端的产品特性
9、强烈的产品本能通过反复的循环学习
Tip
1、好用的Excel插件easyExcel
2、使用开源框架,首先要熟悉他的文档,业务逻辑可以根据文档中的功能组合实现
3、使用框架要了解他的原理,必要的时候可以查看源码,如springboot要清楚的明白自动配置如何实现
4、说话和做事要理清思路,如一二三,最后总结
网友评论