原创 二分查找及變體
二分查找,如何用最勝內存的方式實現快速查找 針對有序數據集合的查找算法,二分查找。 問題:假設我們有1000萬個整數數據,每個數據佔8個字節,如何設計數據結構和算法快速判斷某個整數是否
原创 字符串模式匹配:BF算法和RK算法
BF算法(暴力匹配算法,也叫樸素匹配算法).性能不是很高。 我們在主串中,檢查起始位置分別是0.1.2…n-m且長度爲n-m+1個子串,看有沒有跟模式串匹配的。(在A中查找B,A就是主串,B就是模式串,且A>B
原创 停不下來使用的散列表
散列表(hash table) 散列思想:散列表用的是數組支持按照下標隨機訪問數據的特性,所以散列表其實就是數組的一種擴展,由數組演化而來,如果沒有數組,就沒有散列表。 散列表用的就是數組支持按照下標
原创 記隨筆
DELETE a.* FROM EST_BIND_HOUSE_EQUALLY a LEFT JOIN EST_BIND_HOUSE_COST b ON a.house_id = b.house_id AND a.cost_valu
原创 哈希算法應用場景
哈希算法 將任意長度的二進制值串映射爲固定長度的二進制值串,這個映射的規則就是哈希算法,而通過原始數據映射之後得到的二進制值串就是哈希值。 優秀哈希算法需要具備的 1.從哈希值不能方向推
原创 MySQL防止重複插入相同記錄 insert if not exists
轉載地址:https://blog.csdn.net/u012400305/article/details/80857804 實測有效
原创 JAVA的網絡
關於JAVA的網絡,之前有個比喻形式的總結,分享給大家: 例子:有一個養雞的農場,裏面養着來自各個農戶(Thread)的雞(Socket),每家農戶都在農場中建立了自己的雞舍(SocketChannel) 1、BIO:Block
原创 BM算法
BM(Boyer-Moore)算法,非常高效的字符串匹配算法。 BM算法的核心思想 我們把模式串和主串的匹配過程,看作模式串在主串中不停地往後滑動。當遇到不匹配的字符時,BF 算法和 RK 算法的做法
原创 面試時的經典排序總結
排序 實際開發中,爲什麼我們更傾向於使用插入排序而不是冒泡排序? 答:從代碼實現上來看,冒泡排序的數據交換要比插入排序的數據移動要複雜,冒泡排序需要3個賦值操作,而插入排序只需要1個,所以在對相同數
原创 鏈表建議
鏈表的經典應用場景:LRU緩存淘汰算法 常見的策略有:先進先出策略FIFO(First in,First out),最少使用策略LFU(Least Frequantly Used),最近最少使用策略LR
原创 java核心技術卷 -- 網絡編程
1.4因特網地址 是用一串數字表示的主機地址,一個因特網地址是由4個字節組成,如果需要在主機名和因特網地址之間進行轉換,就需要使用InetAddress類 只要主機操作系統支持IPV6格式的因特網地址
原创 數組基本概念
線性表:線性表就是數據排成像一條線一樣的結構,每個線性表上的數據最多隻有前和後兩個方向,有數組,鏈表,隊列,棧等都是線性表結構 非線性表:比如二叉樹,堆,圖等,非線性表中,數據之間並不是簡單的前後關係
原创 如何求出最大公約數
題目: 寫一段代碼,求出兩個數的最大公約數,要儘量優化算法的性能。 1.暴力枚舉 2.輾轉相除法 兩個正整數a和b(a>b),他們的最大公約數等於a除以b的餘數
原创 判斷鏈表有環
題目: 有一個單向鏈表,表中可能出現環,怎麼判斷是否有環。 思路: 首先創建兩個指針p1和p2,讓他們同時指向這個鏈表的頭結點,然後開始一個大的
原创 最小棧的實現
題目: 實現一個棧,該棧帶有出棧,入棧,取最小元素3個方法,要保證3個方法的時間複雜度都是O(1); 解題思路: 1.設原有的棧叫做棧A,此時額外創建一個棧B,用於輔助棧A