算法题:
- 链接:https://leetcode-cn.com/problems/swap-nodes-in-pairs/
题目描述及示例
给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
输入:head = [1,2,3,4]
输出:[2,1,4,3]
解题
var swapPairs = function(head) {
let VirtualHeadNode = new ListNode(0)
VirtualHeadNode.next = head
let tmp = VirtualHeadNode
while (tmp.next !==null && tmp.next.next !==null) {
const node1 = tmp.next
const node2 = tmp.next.next
tmp.next = node2
node1.next = node2.next
node2.next = node1
tmp = node1
}
return VirtualHeadNode.next
};
遇到的问题
链接:https://bigfrontend.dev/zh/problem/implement-your-own-Object-create
- 题目
- Object.create() 可以用来创建新的对象。
- 你能实现一个myObjectCreate()来实现(大概)相同的逻辑吗 ?
- 注意
- Object.create的第二个参数不用实现,忽略即可。
- 如果传入的不是object,请throw error。 (为什么?)
- 请不要直接使用Object.create() 和 Object.setPrototypeOf()
- 解题
function myObjectCreate(proto) {
// your code here
if (typeof proto !== 'object' || proto === null) throw new Error('');
const obj = {};
obj.__proto__ = proto;
return obj;
}