原创 【左神算法】已知一棵完全二叉樹,求其節點的個數

1.題目 已知一棵完全二叉樹,求其節點的個數 要求:時間複雜度低於O(N),N爲這棵樹的節點個數 2.思路&code 2.1 思路 一般來說,我們遍歷二叉樹需要O(n)的時間複雜度,必須將每個節點進行統計纔可以計算出節點的總數

原创 【左神算法】驗證一個樹是否爲二叉搜索樹

題目 驗證一個樹是否爲二叉搜索樹 思路 思路:根據二叉搜索樹的特點 左子樹小於根節點 右子樹大於根節點 而中序遍歷的結果就是一個有序的結果,因此 只要中序遍歷的時候 依次比較前一個元素的大小 如果小於不是二叉搜索樹 否則的話就

原创 【Java容器】HashMap從入門到熟悉

1. HashMap從入門到熟悉 1. hash碰撞的解決方案 HashMap就是使用哈希表來存儲的。哈希表爲解決衝突,可以採用開放地址法和鏈地址法等來解決問題,Java中HashMap採用了鏈地址法。鏈地址法,簡單來說,就是數

原创 【Java容器】ConcurrentHashMap詳解

ConcurrentHashMap 1. ConcurrentHashmap是如何實現線程安全的 1. 數據結構 static final class Segment<K,V> extends ReentrantLock impl

原创 【每日一題-leetcode】 62.不同路徑

62.不同路徑 不同路徑 難度中等523 一個機器人位於一個 *m x n *網格的左上角 (起始點在下圖中標記爲“Start” )。 機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記爲“Fini

原创 【每日一題-leetcode】1143.最長公共子序列

1143.最長公共子序列 最長公共子序列 難度中等127 給定兩個字符串 text1 和 text2,返回這兩個字符串的最長公共子序列的長度。 一個字符串的 *子序列 *是指這樣一個新的字符串:它是由原字符串在不改變字符的相

原创 【左神算法】二叉樹的先序、中序、後序遍歷,包括遞歸方式和非遞歸方式

二叉樹的先序、中序、後序遍歷,包括遞歸方式和非遞歸方式 1、二叉樹的前序遍歷 1.1 思路: 二叉樹是一個由left子節點和right子節點 以及val組成的數據結果。而前序遍歷的過程就是 根左右。 而實現前序遍歷,我們可以用兩種

原创 【左神算法】迴文鏈表

題目 判斷一個鏈表是否爲迴文結構 【題目】 給定一個鏈表的頭節點head,請判斷該鏈表是否爲迴文結構。 例如: 1->2->1,返回true。 1->2->2->1,返回true。 15->6->15,返回true。 1-

原创 【劍指offer】64.求1+2+…+n

64.求1+2+…+n 面試題64. 求1+2+…+n 難度中等66 求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷語句(A?B:C)。 示例 1: 輸入:

原创 【每日一題-leetcode】 120.三角形最小路徑和

120.三角形最小路徑和 三角形最小路徑和 難度中等387 給定一個三角形,找出自頂向下的最小路徑和。每一步只能移動到下一行中相鄰的結點上。 例如,給定三角形: [ [2], [3,4], [6,5,

原创 【每日一題-leetcode】74.搜索二維矩陣

74.搜索二維矩陣 搜索二維矩陣 難度 中等 編寫一個高效的算法來判斷 m x n 矩陣中,是否存在一個目標值。該矩陣具有如下特性: 每行中的整數從左到右按升序排列。 每行的第一個整數大於前一行的最後一個整數。 示例 1

原创 【劍指offer】58 - II. 左旋轉字符串

58 - II. 左旋轉字符串 面試題58 - II. 左旋轉字符串 難度簡單24 字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數實現字符串左旋轉操作的功能。比如,輸入字符串"abcdefg"和數

原创 【每日一題-leetcode】 153.尋找旋轉排序數組中的最小值

153.尋找旋轉排序數組中的最小值 尋找旋轉排序數組中的最小值 難度中等180 假設按照升序排序的數組在預先未知的某個點上進行了旋轉。 ( 例如,數組 [0,1,2,4,5,6,7] 可能變爲 [4,5,6,7,0,1,2]

原创 【每日一題-leetcode】367.有效的完全平方數

367.有效的完全平方數 有效的完全平方數 難度簡單119 給定一個正整數 num,編寫一個函數,如果 num 是一個完全平方數,則返回 True,否則返回 False。 說明:不要使用任何內置的庫函數,如 sqrt。 示

原创 【左神算法】隊列實現棧

隊列實現棧 /** Initialize your data structure here. */ private Queue<Integer> q; private Integer tail;//記錄棧頂元素