From fe0b2396762a86b6856ed1ec3fe00776b8a2b950 Mon Sep 17 00:00:00 2001 From: zhaocchen Date: Mon, 31 May 2021 11:54:09 +0800 Subject: [PATCH] feat: add javascript solution to lc problem: No.0147.Insertion Sort List (#418) --- .../0147.Insertion Sort List/README.md | 38 +++++++++++++++++++ .../0147.Insertion Sort List/README_EN.md | 38 +++++++++++++++++++ .../0147.Insertion Sort List/Solution.js | 33 ++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 solution/0100-0199/0147.Insertion Sort List/Solution.js diff --git a/solution/0100-0199/0147.Insertion Sort List/README.md b/solution/0100-0199/0147.Insertion Sort List/README.md index 130335ffe39e..b3a5902bd6a3 100644 --- a/solution/0100-0199/0147.Insertion Sort List/README.md +++ b/solution/0100-0199/0147.Insertion Sort List/README.md @@ -123,6 +123,44 @@ class Solution { } ``` +### **JavaScript** + +```js +/** + * 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} + */ +var insertionSortList = function(head) { + if (head == null || head.next == null) return head; + let dummy = new ListNode(head.val, head); + let prev = dummy, cur = head; + while (cur != null) { + if (prev.val <= cur.val) { + prev = cur; + cur = cur.next; + continue; + } + let p = dummy; + while (p.next.val <= cur.val) { + p = p.next; + } + let t = cur.next; + cur.next = p.next; + p.next = cur; + prev.next = t; + cur = t; + } + return dummy.next; +}; +``` + ### **...** ``` diff --git a/solution/0100-0199/0147.Insertion Sort List/README_EN.md b/solution/0100-0199/0147.Insertion Sort List/README_EN.md index a091db2eb2ac..b1e48ddb5d4c 100644 --- a/solution/0100-0199/0147.Insertion Sort List/README_EN.md +++ b/solution/0100-0199/0147.Insertion Sort List/README_EN.md @@ -113,6 +113,44 @@ class Solution { } ``` +### **JavaScript** + +```js +/** + * 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} + */ + var insertionSortList = function(head) { + if (head == null || head.next == null) return head; + let dummy = new ListNode(head.val, head); + let prev = dummy, cur = head; + while (cur != null) { + if (prev.val <= cur.val) { + prev = cur; + cur = cur.next; + continue; + } + let p = dummy; + while (p.next.val <= cur.val) { + p = p.next; + } + let t = cur.next; + cur.next = p.next; + p.next = cur; + prev.next = t; + cur = t; + } + return dummy.next; +}; +``` + ### **...** ``` diff --git a/solution/0100-0199/0147.Insertion Sort List/Solution.js b/solution/0100-0199/0147.Insertion Sort List/Solution.js new file mode 100644 index 000000000000..4ca9c0f7ac14 --- /dev/null +++ b/solution/0100-0199/0147.Insertion Sort List/Solution.js @@ -0,0 +1,33 @@ +/** + * 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} + */ + var insertionSortList = function(head) { + if (head == null || head.next == null) return head; + let dummy = new ListNode(head.val, head); + let prev = dummy, cur = head; + while (cur != null) { + if (prev.val <= cur.val) { + prev = cur; + cur = cur.next; + continue; + } + let p = dummy; + while (p.next.val <= cur.val) { + p = p.next; + } + let t = cur.next; + cur.next = p.next; + p.next = cur; + prev.next = t; + cur = t; + } + return dummy.next; +}; \ No newline at end of file