2개의 정렬된 Linked List를 하나의 Linked List로 병합하는 함수 구현
구현 방법
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} list1
* @param {ListNode} list2
* @return {ListNode}
*/
const linkNextList = function(list1, list2, head) {
if (!list1 && !list2) {
return head;
}
if (!list1) {
return head.next = list2;
}
if (!list2) {
return head.next = list1;
}
if (list1.val <= list2.val) {
head.next = new ListNode(list1.val);
head = head.next;
return linkNextList(list1.next, list2, head);
} else {
head.next = new ListNode(list2.val);
head = head.next;
return linkNextList(list1, list2.next, head);
}
}
var mergeTwoLists = function(list1, list2) {
let head = new ListNode();
linkNextList(list1, list2, head);
head = head.next;
return head;
};
Linked List를 거꾸로 정렬하는 함수 구현
구현 방법
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
const helper = function(node, next, prev) {
if (!node) {
return prev;
}
next = node.next;
node.next = prev;
prev = node;
node = next;
return helper(node, next, prev);
}
var reverseList = function(head) {
let node = head;
let next;
let prev = null;
return helper(node, next, prev);
};
주어진 지수의 제곱수의 합이 특정한 값이 되는 경우의 수를 반환하는 함수 구현
구현 방법
function powerSum(X, N) {
let base = 1;
function calculateResume(value, base, exponent) {
let resume = value - Math.pow(base, exponent);
if (resume < 0) return 0;
else if (resume === 0) return 1;
else return calculateResume(resume, base + 1, exponent) + calculateResume(value, base + 1, exponent);
}
return calculateResume(X, base, N);
}