diff --git a/codes/javascript/chapter_array_and_linkedlist/linked_list.js b/codes/javascript/chapter_array_and_linkedlist/linked_list.js index cf701a0c..6c5ef8b9 100644 --- a/codes/javascript/chapter_array_and_linkedlist/linked_list.js +++ b/codes/javascript/chapter_array_and_linkedlist/linked_list.js @@ -4,8 +4,8 @@ * Author: IsChristina (christinaxia77@foxmail.com), Justin (xiefahit@gmail.com) */ -const PrintUtil = require("../include/PrintUtil"); -const ListNode = require("../include/ListNode"); +const { printLinkedList } = require("../include/PrintUtil"); +const { ListNode } = require("../include/ListNode"); /* 在链表的结点 n0 之后插入结点 P */ function insert(n0, P) { @@ -62,17 +62,17 @@ n1.next = n2; n2.next = n3; n3.next = n4; console.log("初始化的链表为"); -PrintUtil.printLinkedList(n0); +printLinkedList(n0); /* 插入结点 */ insert(n0, new ListNode(0)); console.log("插入结点后的链表为"); -PrintUtil.printLinkedList(n0); +printLinkedList(n0); /* 删除结点 */ remove(n0); console.log("删除结点后的链表为"); -PrintUtil.printLinkedList(n0); +printLinkedList(n0); /* 访问结点 */ const node = access(n0, 3); diff --git a/codes/javascript/chapter_computational_complexity/worst_best_time_complexity.js b/codes/javascript/chapter_computational_complexity/worst_best_time_complexity.js index a0a4df3b..488ff653 100644 --- a/codes/javascript/chapter_computational_complexity/worst_best_time_complexity.js +++ b/codes/javascript/chapter_computational_complexity/worst_best_time_complexity.js @@ -13,8 +13,8 @@ function randomNumbers(n) { } // 随机打乱数组元素 for (let i = 0; i < n; i++) { - let r = Math.floor(Math.random() * (i + 1)); - let temp = nums[i]; + const r = Math.floor(Math.random() * (i + 1)); + const temp = nums[i]; nums[i] = nums[r]; nums[r] = temp; } @@ -34,14 +34,12 @@ function findOne(nums) { } /* Driver Code */ -function main() { - for (let i = 0; i < 10; i++) { - let n = 100; - let nums = randomNumbers(n); - let index = findOne(nums); - console.log( - "\n数组 [ 1, 2, ..., n ] 被打乱后 = [" + nums.join(", ") + "]" - ); - console.log("数字 1 的索引为 " + index); - } +for (let i = 0; i < 10; i++) { + const n = 100; + const nums = randomNumbers(n); + const index = findOne(nums); + console.log( + "\n数组 [ 1, 2, ..., n ] 被打乱后 = [" + nums.join(", ") + "]" + ); + console.log("数字 1 的索引为 " + index); } diff --git a/codes/javascript/chapter_searching/hashing_search.js b/codes/javascript/chapter_searching/hashing_search.js index 5c1c5100..187f48f2 100644 --- a/codes/javascript/chapter_searching/hashing_search.js +++ b/codes/javascript/chapter_searching/hashing_search.js @@ -4,9 +4,7 @@ * Author: Zhuo Qinyue (1403450829@qq.com) */ -const PrintUtil = require("../include/PrintUtil"); -const ListNode = require("../include/ListNode"); - +const { ListNode, arrToLinkedList } = require("../include/ListNode"); /* 哈希查找(数组) */ function hashingSearchArray(map, target) { @@ -22,30 +20,26 @@ function hashingSearchLinkedList(map, target) { return map.has(target) ? map.get(target) : null; } -function main() { - const target = 3; +/* Driver Code */ +const target = 3; - /* 哈希查找(数组) */ - const nums = [1, 5, 3, 2, 4, 7, 5, 9, 10, 8]; - // 初始化哈希表 - const map = new Map(); - for (let i = 0; i < nums.length; i++) { - map.set(nums[i], i); // key: 元素,value: 索引 - } - const index = hashingSearchArray(map, target); - console.log("目标元素 3 的索引 = " + index); - - /* 哈希查找(链表) */ - let head = new ListNode().arrToLinkedList(nums) - // 初始化哈希表 - const map1 = new Map(); - while (head != null) { - map1.set(head.val, head); // key: 结点值,value: 结点 - head = head.next; - } - const node = hashingSearchLinkedList(map1, target); - console.log("目标结点值 3 的对应结点对象为" ); - PrintUtil.printLinkedList(node); +/* 哈希查找(数组) */ +const nums = [1, 5, 3, 2, 4, 7, 5, 9, 10, 8]; +// 初始化哈希表 +const map = new Map(); +for (let i = 0; i < nums.length; i++) { + map.set(nums[i], i); // key: 元素,value: 索引 } +const index = hashingSearch(map, target); +console.log("目标元素 3 的索引 = " + index); -main(); +/* 哈希查找(链表) */ +let head = arrToLinkedList(nums) +// 初始化哈希表 +const map1 = new Map(); +while (head != null) { + map1.set(head.val, head); // key: 结点值,value: 结点 + head = head.next; +} +const node = hashingSearch1(map1, target); +console.log("目标结点值 3 的对应结点对象为", node); diff --git a/codes/javascript/chapter_searching/linear_search.js b/codes/javascript/chapter_searching/linear_search.js index b71f0ced..a21f1976 100644 --- a/codes/javascript/chapter_searching/linear_search.js +++ b/codes/javascript/chapter_searching/linear_search.js @@ -4,7 +4,7 @@ * Author: JoseHung (szhong@link.cuhk.edu.hk) */ -const ListNode = require("../include/ListNode"); +const { ListNode, arrToLinkedList } = require("../include/ListNode"); /* 线性查找(数组) */ function linearSearchArray(nums, target) { @@ -34,15 +34,14 @@ function linearSearchLinkedList(head, target) { } /* Driver Code */ -var target = 3; +const target = 3; /* 在数组中执行线性查找 */ -var nums = [1, 5, 3, 2, 4, 7, 5, 9, 10, 8]; -var index = linearSearchArray(nums, target); +const nums = [1, 5, 3, 2, 4, 7, 5, 9, 10, 8]; +const index = linearSearchArray(nums, target); console.log("目标元素 3 的索引 = " + index); /* 在链表中执行线性查找 */ -var linkedList = new ListNode(); -var head = linkedList.arrToLinkedList(nums); -var node = linearSearchLinkedList(head, target); -console.log("目标结点值 3 的对应结点对象为 " + node); +const head = arrToLinkedList(nums); +const node = linearSearchLinkedList(head, target); +console.log("目标结点值 3 的对应结点对象为 ", node); diff --git a/codes/javascript/chapter_stack_and_queue/linkedlist_queue.js b/codes/javascript/chapter_stack_and_queue/linkedlist_queue.js index 5f17e99c..551d5ce5 100644 --- a/codes/javascript/chapter_stack_and_queue/linkedlist_queue.js +++ b/codes/javascript/chapter_stack_and_queue/linkedlist_queue.js @@ -4,7 +4,7 @@ * Author: S-N-O-R-L-A-X (snorlax.xu@outlook.com) */ -const ListNode = require("../include/ListNode"); +const { ListNode } = require("../include/ListNode"); /* 基于链表实现的队列 */ class LinkedListQueue { diff --git a/codes/javascript/chapter_stack_and_queue/linkedlist_stack.js b/codes/javascript/chapter_stack_and_queue/linkedlist_stack.js index c6e9f27c..6ad3b96e 100644 --- a/codes/javascript/chapter_stack_and_queue/linkedlist_stack.js +++ b/codes/javascript/chapter_stack_and_queue/linkedlist_stack.js @@ -4,7 +4,7 @@ * Author: S-N-O-R-L-A-X (snorlax.xu@outlook.com) */ -const ListNode = require("../include/ListNode"); +const { ListNode } = require("../include/ListNode"); /* 基于链表实现的栈 */ class LinkedListStack { diff --git a/codes/javascript/include/ListNode.js b/codes/javascript/include/ListNode.js index 6e226e9c..aeef0d0f 100755 --- a/codes/javascript/include/ListNode.js +++ b/codes/javascript/include/ListNode.js @@ -11,37 +11,41 @@ class ListNode { val; next; constructor(val, next) { - this.val = (val === undefined ? 0 : val); - this.next = (next === undefined ? null : next); - } - - /** - * Generate a linked list with an array - * @param arr - * @return - */ - arrToLinkedList(arr) { - const dum = new ListNode(0); - let head = dum; - for (const val of arr) { - head.next = new ListNode(val); - head = head.next; - } - return dum.next; - } - - /** - * Get a list node with specific value from a linked list - * @param head - * @param val - * @return - */ - getListNode(head, val) { - while (head !== null && head.val !== val) { - head = head.next; - } - return head; + this.val = (val === undefined ? 0 : val); + this.next = (next === undefined ? null : next); } } -module.exports = ListNode +/** + * Generate a linked list with an array + * @param arr + * @return + */ +function arrToLinkedList(arr) { + const dum = new ListNode(0); + let head = dum; + for (const val of arr) { + head.next = new ListNode(val); + head = head.next; + } + return dum.next; +} + +/** + * Get a list node with specific value from a linked list + * @param head + * @param val + * @return + */ +function getListNode(head, val) { + while (head !== null && head.val !== val) { + head = head.next; + } + return head; +} + +module.exports = { + ListNode, + arrToLinkedList, + getListNode +}; diff --git a/docs/chapter_computational_complexity/time_complexity.md b/docs/chapter_computational_complexity/time_complexity.md index 3989f621..dd8df29b 100644 --- a/docs/chapter_computational_complexity/time_complexity.md +++ b/docs/chapter_computational_complexity/time_complexity.md @@ -2647,8 +2647,8 @@ $$ } // 随机打乱数组元素 for (let i = 0; i < n; i++) { - let r = Math.floor(Math.random() * (i + 1)); - let temp = nums[i]; + const r = Math.floor(Math.random() * (i + 1)); + const temp = nums[i]; nums[i] = nums[r]; nums[r] = temp; }