最后
总的来说,面试官要是考察思路就会从你实际做过的项目入手,考察你实际编码能力,就会让你在电脑敲代码,看你用什么编辑器、插件、编码习惯等。所以我们在回答面试官问题时,有一个清晰的逻辑思路,清楚知道自己在和面试官说项目说技术时的话就好了
开源分享:docs.qq.com/doc/DSmRnRG… 在线阅读地址
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
示例1:
输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4
限制:
0 <= 链表长度 <= 1000
注意:本题与主站 21 题相同:leetcode-cn.com/problems/me…
思路:
-
将两个链表的数据合并,并排序
-
重新还原成新的链表
var mergeTwoLists = function (l1, l2) {
let arr = [];
const head = new ListNode(null)
while (l1) {
arr.push(l1.val)
l1 = l1.next;
}
while (l2) {
arr.push(l2.val)
l2 = l2.next;
}
// 整合数据
arr = arr.sort((a, b) => a - b);
let cur = head;
arr.forEach(v => {
const node = new ListNode(v);
cur.next = node;
cur = cur.next;
})
return head.next;
};
- 利用排序的这一特点,分别在两个链表中选择相对小的那个
var mergeTwoLists = function (l1, l2) {
let head = new ListNode(null)
cur = head;
while (l1 || l2) {
if (!l1) {
cur.next = new ListNode(l2.val)
l2 = l2.next;
}else if (!l2) {
cur.next = new ListNode(l1.val)
l1 = l1.next;
} else if (l1.val < l2.val) {
cur.next = new ListNode(l1.val)
l1 = l1.next;
} else {
cur.next = new ListNode(l2.val)
l2 = l2.next;
}
cur = cur.next;
}
return head.next;
};
// by zy
var mergeTwoLists = function(l1, l2) {
let head = new ListNode(0);
let cur = head;
while(l1 && l2){
if(l1.val <= l2.val){
cur.next = l1;
结尾
学习html5、css、javascript这些基础知识,学习的渠道很多,就不多说了,例如,一些其他的优秀博客。但是本人觉得看书也很必要,可以节省很多时间,常见的javascript的书,例如:javascript的高级程序设计,是每位前端工程师必不可少的一本书,边看边用,了解js的一些基本知识,基本上很全面了,如果有时间可以读一些,js性能相关的书籍,以及设计者模式,在实践中都会用的到。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】