原创 求數字在非降序數組中出現的次數

題目描述: 在一個非降序排列的數組中,找出數字target出現的次數。 非降序數組,比如{1,1,1,2,3,4,5,5,6} 思路一: 先通過二分查找,找到arr[index]等於target的index,在分別向前後遍歷,直到arr[

原创 循環數組-找出最小值

今天面試遇到一個有意思的題,記錄一下如下。 題目一: 一個循環數組,數組中原始值按升序排列(假設所有值不相等),但是現在從某個位置截斷,該位置後面的元素移動到數組的最前面,找出這樣的數組的最小值。如 arr = { 1,2,3,4,5,

原创 第一次只出現一次的字符

題目描述 一個字符串全部由字母組成,如果存在只出現一次的字符,則返回第一個字符的位置,如果不存在怎返回-1. 思路: 因爲要尋找第一個只出現一次的字符,所以必須全部遍歷,用某個數據結構保存每個位置字符的信息。第二次遍歷要在該數據結構中查找

原创 可以回跳的臺階跳

題目一: 青蛙跳臺階有兩種方式:一次跳1級,一次跳兩級,問從0級階梯跳到n級階梯共有多少種方式? 思路: jumpStage(n)表示從0~n階的方法數; 那麼對於0~n中的某一臺階m,到達該m臺階的方式一共有兩種:從m-1階跳一階

原创 判斷一顆樹是否爲平衡二叉樹

題意描述: 給定一個棵樹的根節點,判斷該樹是否爲平衡二叉樹? 什麼是平衡二叉樹? 平衡二叉樹(AVL, Self-balancing binary search tree)是一棵所有節點的左右子樹深度差不超過1的二叉搜索樹。 這表明AVL

原创 Java中運行表達式return 1.0/0.0會發生什麼?return 1/0會發生什麼?

在Java中運行表達式:1.0 / 0.0,會有返回麼?會不會拋出異常或者是編譯器error? 那1/0呢? ① 浮點數除法,1.0/0.0不會拋出異常,值爲Infinity。 This is another tricky qu

原创 Java異常:一個線程運行時發生異常會怎樣?

Java中Throwable分爲Exception和Error: 出現Error的情況下,程序會停止運行。 Exception分爲RuntimeException和非運行時異常。 非運行時異常必須處理,比如thread中sleep(

原创 合併兩棵二叉樹

給定兩棵任意的二叉樹,將其合併,返回合併後的根節點。 思路: 基於先序遍歷,如果root1存在就和root2的val相加,如果root1不存在,就把root2的引用直接賦值給root1。 代碼如下: public class Mai

原创 醜數

這是劍指offer上的一道算法題: 把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因爲它包含因子7。 習慣上我們把1當做是第一個醜數。求按從小到大的順序的第N個醜數。 思路: 比較容易想到的

原创 Java終止線程的四種方法

線程終止常用的四種方式: 終止線程的第一種方式:等待run()或者是call()方法執行完畢 終止線程的第二種方式:設置共享變量,如boolean flag。flag作爲線程是否繼續執行的標誌 終止線程的第三種方式:利用Thread

原创 interrupt(),interrupted() 和isInterrupted()使用

Thread類中的三個方法: public void interrupt() // 無返回值 public boolean isInterrupted() // 有返回值 public static boolean

原创 二叉搜索樹的後序遍歷序列

題目描述 輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則輸出true,否則輸出false。假設輸入的數組的任意兩個數字都互不相同。 首先:什麼是二叉搜索樹(Binary Search Tree)? 首先是一棵

原创 二叉搜索樹轉化爲雙向鏈表

題目描述: 輸入一棵二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整樹中結點指針的指向。 思路一: 按中序遍歷,藉助中間隊列用於存儲樹種的各個節點,然後遍歷隊列,給相鄰節點建立關係; 思路二: