原创 【Java基礎】面向對象特性

面向對象的特徵 面向對象的主要特徵包括:抽象,繼承,封裝,多態 1. 抽象:忽略主題中與當前目標無關的方面,值注意與目標有關的方面(抓住主要矛盾或者主要特徵),包括數據抽象和過程抽象 2. 繼承:用於表述類的共性,是一種聯結類

原创 【Java基礎】Java中的char是否可以存儲一箇中文字符之理解字符字節以及編碼集

Java中的一個char採用的是Unicode編碼集,佔用兩個字節,而一箇中文字符也是兩個字節,因此Java中的char是可以表示一箇中文字符的。 但是在C/C++中由於採用的字符編碼集是ASCII,只有一個字節,因此是沒辦法

原创 【劍指offer-Java版】46求 1 + 2 + 3 + ... + n

求 1 + 2 + … + n 但是不能使用判斷,循環,分支,條件判斷語句以及乘除運算 利用反射實現遞歸:目標就是構建一個遞歸出口 public class _Q46<T> { public int termi

原创 【劍指offer-Java版】40數組中只出現一次的數字

數組中只出現一次的數字:輸入一個數組,該數組中有兩個數字只出現了一次,其他數字都出現了兩次,求出這兩個只出現了一次的數字 要求時間複雜度爲O(n)空間複雜度爲O(1) 考慮一個數組中只有一個數字僅僅出現一次而其他數字都出現

原创 【劍指offer-Java版】47不用加減乘除做加法

不用 + - * / 做加法 輸入兩個整數,不使用四則運算求出這兩個數的和 分析加法運算對應的位運算: 1 等價於兩個數先做異或運算 – 相當於不考慮進位的加法 2 然後按位與運算並將與運算的和左移一位 – 相當於考慮進位

原创 【劍指offer-Java版】43n個骰子的點數

屬於比較適合進行時空權衡的題目,不過沒有過多的研究dp技巧,只是簡單的用作者的思路實現了下 public class _Q43<T> { private final static int dice = 6;

原创 【劍指offer-Java版】37兩個鏈表的第一個公共結點

兩個鏈表中的第一個公共頂點: 解法一:兩次遍歷即可 第一次遍歷找到兩個鏈表的長度,求出差值k,然後較長的;鏈表先走k步,之後兩個鏈表同時走,直到遇到第一個相同的結點爲止 解法二:輔助棧,先順序遍歷並將鏈表內容存儲到棧中,然

原创 【Java基礎】語言基礎知識

Java語言的優點 純面向對象 平臺無關性:編譯器編譯後的中間代碼由JVM解釋執行 內置類庫比較豐富簡化開發 提供完善的安全機制異常機制以及垃圾回收機制和強類型機制 除去了C++中那一理解的特性:如多重繼承,虛基類

原创 【數據庫】基礎知識總結

數據庫完整性 爲了維護數據庫完整性DBMS需要提供: 1. 提供定義完整性約束條件的機制 2. 提供完整性檢查方法:一般在INSERT UPDATE DELETE語句執行後開始檢查或者在事物提交之前進行檢查 3. 違約處理機

原创 【劍指offer-Java版】36數組中的逆序對

數組中的逆序對:歸併排序的另類應用 數組中的逆序對:給定的數組,如果兩個數字中前面一個數字大於後面的一個,那麼稱爲一個逆序對,數組中所有滿足此關係的逆序對總數就是這個數組的逆序對 此處的實現並不優雅,畢竟copy數組是不需要的,只

原创 【劍指offer-Java版】49把字符串轉換爲整數

字符串轉換爲整數 : atoi 可能的輸入: 1 帶符號數 2 無符號數 3 零 4 空指針 5 超出表示範圍 – 暫時僅僅是直接退出且設置最小 – 可以考慮此時拋個異常 6 非法輸入,比如並不是一個0-9或者+ -組

原创 【劍指offer-Java版】42翻轉單詞順序VS左旋轉字符串

反轉單詞順序以及左旋轉字符串:輸入一個英文句子,翻轉句子中的單詞順序,單詞內部的字母順序是不變的 – I am a student. -> student. am I 第一步,翻轉句子中的所有字符串,第二步翻轉單詞順序

原创 【劍指offer-Java版】35第一個只出現一次的字符

第一個只出現一次的字符: 對於給定的字符,遍歷一遍,然後將其映射到一個hash表中,遍歷完成之後,遍歷哈希表, 遇到的第一個哈希值爲1所對應的字符就是第一個只出現了一次的字符 public class _Q35<

原创 【劍指offer-Java版】44撲克牌的順子

撲克牌中的順子:從一副撲克牌中抽取5張,判斷是不是一個順子。 2- 10 爲自身,A 爲1 JQK爲11 12 13,大小王爲任意數 先按從小到大對5張牌進行排序 首先判斷大小王個數K(只能爲0 1 2) 然後判斷不連續的間隔

原创 【劍指offer-Java版】38數字在排序數組中出現的次數

數字在排序數組中出現的次數: 最簡單粗暴的方法是O(n^2) 可能的解法可以採用二分,首先根據二分找到給定數字在數組中的位置,然後再左右二分,找到邊界(第一個和最後一個),左右邊界的差值就是出現次數 public cl