Skip to content

Instantly share code, notes, and snippets.

@ivan-demchenko
Created August 11, 2019 12:23
Show Gist options
  • Save ivan-demchenko/a4be07d870542449aa00b7fa3a61d551 to your computer and use it in GitHub Desktop.
Save ivan-demchenko/a4be07d870542449aa00b7fa3a61d551 to your computer and use it in GitHub Desktop.
JS Bin // source https://jsbin.com/cilusoc
<!DOCTYPE html>
<html>
<head>
<meta name="description" content="Merge Linked Lists">
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<script id="jsbin-javascript">
"use strict";
console.clear();
var Node = function Node(val, next) {
return {
val: val, next: next
};
};
var list1 = Node(7, Node(8, Node(9)));
var list2 = Node(1, Node(2, Node(3, Node(4))));
var merge = function merge(l1, l2) {
if (l1.val <= l2.val) {
return Node(l1.val, l1.next ? merge(l1.next, l2) : l2);
} else {
return Node(l2.val, l2.next ? merge(l1, l2.next) : l1);
}
};
var toArr = function toArr(list) {
var acc = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
return acc.concat(list.val).concat(list.next ? toArr(list.next) : []);
};
console.log(toArr(merge(list1, list2)));
</script>
<script id="jsbin-source-javascript" type="text/javascript">console.clear();
const Node = (val, next) => ({
val, next
});
const list1 = Node(7, Node(8, Node(9)));
const list2 = Node(1, Node(2, Node(3, Node(4))));
const merge = (l1, l2) => {
if (l1.val <= l2.val) {
return Node(l1.val, l1.next ? merge(l1.next, l2) : l2);
} else {
return Node(l2.val, l2.next ? merge(l1, l2.next) : l1);
}
}
const toArr = (list, acc = []) => {
return acc
.concat(list.val)
.concat(list.next ? toArr(list.next) : []);
}
console.log(
toArr(merge(list1, list2))
);</script></body>
</html>
"use strict";
console.clear();
var Node = function Node(val, next) {
return {
val: val, next: next
};
};
var list1 = Node(7, Node(8, Node(9)));
var list2 = Node(1, Node(2, Node(3, Node(4))));
var merge = function merge(l1, l2) {
if (l1.val <= l2.val) {
return Node(l1.val, l1.next ? merge(l1.next, l2) : l2);
} else {
return Node(l2.val, l2.next ? merge(l1, l2.next) : l1);
}
};
var toArr = function toArr(list) {
var acc = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
return acc.concat(list.val).concat(list.next ? toArr(list.next) : []);
};
console.log(toArr(merge(list1, list2)));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment