两数相加
var addTwoNumbers = function (l1, l2) {
let cur1 = l1;
let cur2 = l2;
let newLinkHead = new ListNode(0);
let result = newLinkHead;
let yu = 0; // 余数
let carrybit = 0; // 进位
let val1;
let val2;
while (cur1 || cur2) {
val1 = (cur1 && cur1.val) || 0;
val2 = (cur2 && cur2.val) || 0;
yu = (val1 + val2 + carrybit) % 10;
result.next = new ListNode(yu);
if (val1 + val2 + carrybit >= 10) {
carrybit = 1;
} else {
carrybit = 0;
}
result = result.next;
cur1 = cur1 && cur1.next;
cur2 = cur2 && cur2.next;
}
if (carrybit >0) { // val1 + val2 + carrybit >= 10
result.next = new ListNode(carrybit);
}
return newLinkHead.next;
};
环形链表
var hasCycle = function (head) {
if (!head) {
return false
}
let pre = head;
let cur = head;
while (pre && pre.next) {
pre = pre.next.next;
cur = cur.next;
if (pre == cur) {
return true
}
}
return false
}