原创 爲什麼補碼是按位取反再加一

今天刷LeetCode的位運算專題,想到機器做減法是加其補碼來計算的。我們都知道求補碼的方法是“按位取反再加一”,但是爲什麼呢?看了幾篇文章,最經典的總結就一句話,正數原碼+其負數的補碼(以下簡稱補碼)=0,正數+其負數的反碼(以下簡稱反

原创 leetcode101[對稱二叉樹]

判斷一個二叉樹是不是鏡像對稱的,比如下面的二叉樹就是鏡像對稱的。 可以用遞歸的方法判斷,當每一個節點的左子節點和右子節點相等時,根據鏡像規則,遞歸向下判斷左子節點的左子樹和右子節點的右子樹,左子節點的右子樹和右子節點的左子樹,同爲nul

原创 leetcode104[二叉樹的層次遍歷]

給定一個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷) 例如: 給定二叉樹 [3,9,20,null,null,15,7],     3    / \   9  20     /  \

原创 leetcode104[二叉樹的最大深度]

給定一個二叉樹,求出其最大的深度,也就是根節點到葉子節點的距離。首先想到的是用遞歸的方法,依次求出每一個節點的最大深度直到葉子結點。每一個節點的最大深度都是左右子樹較大的深度再加當前深度1,即每次遞歸返回Max(left,right)+1

原创 JDK8源碼分析之HashMap

一、什麼是HashMap 顧名思義,HashMap就是基於哈希表的Map實現。哈希表(散列)是一種數據結構,其主幹是數組,但存儲方式是利用哈希函數將元素映射到數組(哈希表)中的位置,通過下標一次定位。 根據哈希表的定義,當我們需要查找

原创 leetcode連續數組系列

一、前綴和 560:和爲k的子數組 給定一個整數數組和一個整數 k,你需要找到該數組中和爲 k 的連續的子數> 組的個數。 示例 1 : 輸入:nums = [1,1,1], k = 2 輸出: 2 , [1,1] 與 [1,1

原创 設計模式之簡單工廠模式和策略模式

一、簡單工廠模式 簡單工廠模式將對象的建立與使用解耦,由工廠負責創建具體對象,應用需要對象時只需調用工廠類的API即可。 比如編寫一個計算器、可使用工廠模式 如上圖所示,加減乘除分別繼承Operation類,重寫getResul

原创 設計模式之工廠方法模式與外觀模式

工廠方法模式 在簡單工廠模式中,由工廠類進行運算的實例化,此時工廠類包含了已編寫好的運算類。此時如果有新的運算需求,則需要更改工廠類的代碼,這就違背了面向對象的開放封閉原則,即類對外開放擴展,對內封閉修改。 工廠方法模式很好的解決

原创 Mysql不能插入中文報錯

用hibernate在Mysql中插入中文數據時,顯示如下錯誤 很明顯是字符編碼的問題,通過show variables like 'character_set_%'命令查看數據庫編碼 可以看到 數據庫和數據庫服務都是latin1編碼,

原创 類加載機制

類的加載就是將class文件加載到虛擬機(內存)中,並進行驗證、準備、解析、初始化,形成JVM可使用的類 1.加載:①獲取定一個類的二進制字節流(可以是class文件,也可以jar文件,war文件等)。               ②將

原创 leetcode5[Longest Palindromic Substring]

最長迴文子串問題,題目描述:給定一個字符串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度爲 1000。 所謂迴文串,就是指一個字符串正序和倒序完全一致,必須"aba","baab"等,本題求的是一個字符串最長的迴文子串,比如

原创 leetcode746[Min Cost Climbing Stairs]

使用最小花費爬樓梯 ,題目描述如下: 數組的每個索引做爲一個階梯,第 i個階梯對應着一個非負數的體力花費值 cost[i](索引從0開始)。 每當你爬上一個階梯你都要花費對應的體力花費值,然後你可以選擇繼續爬一個階梯或者爬兩個階梯。 您需

原创 leetcode198[House Robber]

題目描述: 你是一個專業的小偷,計劃偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。 給定一個代表每個房屋存放金額的非負整數數

原创 leetcode70[Climbing stairs]

爬樓梯問題,描述如下: You are climbing a staircase. It takes n steps to reach to the top. Each time you can either climb 1 or 2 s

原创 leetcode20[Valid Parentheses]

括號配對問題,題目如下: Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input stri