原创 Java排序算法——堆排序

堆排序 堆排序原理:數組表示堆,若根節點存在序號0處,i節點的父節點就爲(i-1)/2。i節點的左右節點下標分別是2*i+1和2*i+2. 若是升序排序,則建立大頂堆,反之若是降序排序,則建立小頂堆。 堆排序是首先建堆,輸出

原创 字符串算法——二維有序數組中查找目標值(Search a 2D Matrix)

問題: Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following prope

原创 字符串算法——字符串匹配

問題:給定一個字符串和一個子串,找到子串在字符串中出現的第一個索引位置,如果沒有則返回-1. 解決思路:如果考慮到時間複雜度,則可以採用KMP算法,時間複雜度爲O(m+n) ,暫不詳細介紹其原理過程。 class Solutio

原创 字符串算法——旋轉數組中查找目標值(有重複元素)( Search in Rotated Sorted Array II)

問題: Follow up for “Search in Rotated Sorted Array”: What if duplicates are allowed? Would this affect the run-tim

原创 字符串算法——兩個有序數組的中位數

問題:有兩個有序的數組nums1和nums2,長度分別爲m和n,找到兩個有序數組的中位數,運行時間複雜度爲O(log(m+n)) 例如: nums1 = [1,3],nums2 = [2],中位數爲2.0 nums1 = [

原创 Java排序算法——直接插入排序

直接插入排序 基本原理:把n個待排序的元素看成爲一個有序表和一個無序表,開始時有序表中只包含一個元素,無需表中包含n-1個元素,排序過程中每次從無序表中取出第一個元素,與有序表中元素依次比較,將它插入到有序表中的適當位置,使之成

原创 字符串算法——最長迴文子串

問題:給定一個字符串,找出最長的迴文子串 例如: “babad”的最長迴文子串爲”bab”,當然”aba”也是可以的 解決思路:這種問題要考慮到迴文子串是奇數還是偶數情況,分爲兩種可能。這裏可以採用從內向外擴散的方法來解決該

原创 Java排序算法——二分插入排序

二分插入排序 基本原理:對於直接插入排序的一種改進,通過不斷地折半來快速確定第i個元素的插入位置。即計算0~i-1的中間點,用i索引處的元素與中間值進行比較,如果i索引處的元素大,說明要插入的這個元素應該在中間值右側,反之在左側

原创 Java排序算法——快速排序

快速排序 基本思想:任取待定排序序列中的某個元素作爲標準(一般取第一個元素),通過一次劃分,將待排元素分爲左右兩個子序列,左子序列中元素小於基準元素,右子序列大於或等於基準元素,然後對兩個子序列繼續進行劃分,直至每一個序列只有一

原创 Java排序算法——冒泡排序

冒泡排序 基本原理:相鄰兩元素進行比較,如有需要則進行進行交換,每完成一次循環就將最大元素排在最後(從小到大),下一次村換是將它的數進行類似操作 結束條件:在任何一趟進行過程中,沒有出現交換 時間效率:O(n2) 空間效率

原创 字符串算法——最長子串(無重複元素)

問題:給定一個字符串,找出最長的無重複元素的子串 例如: “bbbbbb”的子串爲”b” “abcabccd”的子串爲”abc” 兩種思路,一種是從頭開始依次比較,例如: 字符串爲:”abcabccd”,從第一個字符元素

原创 字符串算法——單一數(Single Number II)

問題: Given an array of integers, every element appears three times except for one, which appears exactly once. Find

原创 字符串算法——旋轉數組中查找目標值(Search in Rotated Sorted Array)

問題: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4

原创 字符串算法——String轉換爲Integer

問題:給定一個String,將其轉換爲Integer。 注: 1. 丟棄掉字符串前面的所有空格字符,直到遇到第一個非空格字符 2. 遇到第一個字符元素初始化整數的符號 3. 字符串可以包含其他字符,不影響字符的轉換,遇到非

原创 字符串算法——單一數(Single Number)

問題: Given an array of integers, every element appears twice except for one. Find that single one. Note: Your algo