原创 JavaScript解決哈希碰撞

Hash的基本實現 定義Hash類 function Hash() { this.hash = new Array(128) this.simpleHash = function(key) { // key爲字符串 let

原创 LeetCode[74].搜索二維矩陣(二分查找)

要求 編寫一個高效的算法來判斷 m x n 矩陣中,是否存在一個目標值。該矩陣具有如下特性: 每行中的整數從左到右按升序排列。 每行的第一個整數大於前一行的最後一個整數。 示例 1: 輸入: matrix = [ [1, 3,

原创 JavaScript重建二叉樹

要求 根據前序遍歷和中序遍歷來重建二叉樹. 前序遍歷: [1,2,4,7,3,5,6,8] 中序遍歷: [4,7,2,1,5,3,8,6] 返回二叉樹 遞歸實現 1.前序可得: 根的下一個元素爲左子根, 右子根在減去中序所得左子根所有

原创 LeetCod[206].反轉鏈表1

要求 反轉一個單鏈表 輸入: 1->2->3->4->5->NULL 輸出: 5->4->3->2->1->NULL 方法一 採用三指針實現 使用三個指針,第一次將head.next 反轉爲 null, 之後current指針每移動一

原创 數組去重

數組去重 思路 雙指針法. i指針作爲唯一元素索引. j指針作爲遍歷索引. 遍歷一次過程中,只有j指針指向的值與i指針指向的值不同時,纔會改變i+1指針指向元素的值. 代碼 var removeDuplicates = functio

原创 LeetCode[141].環形鏈表

要求 給定一個鏈表,判斷鏈表中是否有環。 代碼 思路 使用雙指針,快指針和慢指針,快指針一次移動兩個元素,慢指針一次移動一個元素. 若非環形,則快指針先到達末尾進行判斷. 若環形,則當慢指針即將回到起點時,快指針已經與慢指針相遇.設環

原创 LeetCod[1].兩數之和(hash查找優化)

要求 給定一個整數數組和一個目標值,找出數組中和爲目標值的兩個數。 你可以假設每個輸入只對應一種答案,且同樣的元素不能被重複利用。 示例: 給定 nums = [2, 7, 11, 15], target = 9 因爲 nums[0]

原创 LeetCode[136].只出現一次的數字

要求 給定一個非空整數數組,除了某個元素只出現一次以外,其餘每個元素均出現兩次。找出那個只出現了一次的元素。 說明: 你的算法應該具有線性時間複雜度。 你可以不使用額外空間來實現嗎? 示例 1: 輸入: [2,2,1] 輸出: 1 示

原创 LeetCode[387].字符中的第一個唯一字符

要求 給定一個字符串,找到它的第一個不重複的字符,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetcode”, 返回 2. 代碼 lastIndexOf和inde

原创 JavaScript之迭代算法實現二叉樹深度優先遍歷

創建二叉樹結構 function TreeNode(val) { this.val = val; this.left = this.right = null; } let root = new TreeNode(1) let no

原创 LeetCode[350].兩個數組的交集 II

要求 給定兩個數組,編寫一個函數來計算它們的交集。 示例 1: 輸入: nums1 = [1,2,2,1], nums2 = [2,2] 輸出: [2,2] 示例 2: 輸入: nums1 = [4,9,5], nums2 = [9,

原创 LeetCode[26].刪除排序數組中的重複項

要求 給定一個排序數組,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。 不要使用額外的數組空間,你必須在原地修改輸入數組並在使用 O(1) 額外空間的條件下完成。 示例 1: 給定數組 nums =

原创 JavaScript實現二叉樹廣度優先遍歷

創建二叉樹結構 function TreeNode(val) { this.val = val; this.left = this.right = null; } let root = new TreeNode(1) let no

原创 JavaScript實現單鏈表

功能 get(index):獲取鏈表中第 index 個節點的值。如果索引無效,則返回-1。 addAtHead(val):在鏈表的第一個元素之前添加一個值爲 val 的節點。插入後,新節點將成爲鏈表的第一個節點。 addAtTail

原创 LeetCode[189].旋轉數組

題目 給定一個數組,將數組中的元素向右移動 k 個位置,其中 k 是非負數。 示例 1: 輸入: [1,2,3,4,5,6,7] 和 k = 3 輸出: [5,6,7,1,2,3,4] 解釋: 向右旋轉 1 步: [7,1,2,3,4