原创 分治法求數組中的衆數

先說一下題目吧,很簡單,就是給一組數組,求數組中的衆數,但是要用分治法。 看到這個題目還是比較迷的,求一個衆數,用什麼分治啊。最後參考了一下往上的各種答案,發現可以用快排的分割算法,思路如下: 首先是要運用快排的分割算法,設函數名爲qui

原创 分治算法詳解+相關面試題總結(C++版)

分治算法的思想 分治算法的思想就是原問題可以轉換成問題更小的子問題,並且子問題的求解方法和原問題相同,只是規模不同。因此我們就可以將原問題層層分解成小問題,直至小問題能夠直接進行求解。然後對小規模的問題進行求解,然後將求得的解層層向上合併

原创 劍指offer刷題————把數組排成最小的數

問題重述:  題目:輸入一個正整數數組,把數組裏所有的數組拼接起來排成一個數,打印能拼接出的所有數字中最小的一個,例如輸入數組{3,32,321},則打印出着3個數字能排成的最小數字321323。 思路解析: 首先,因爲拼接起來的數可能會

原创 劍指offer刷題————從1到整數n中1出現的次數

問題重述: 題目:輸入一個整數n,求從1到n這n個整數的十進制表示中1出現的次數。例如輸入12,從1到12着些整數中包含1的數字有1,10,11,12,1一共出現了5次(11中有兩個1). 思路解析: 這道題的解析下面網址給出的解析非常簡

原创 劍指offer刷題————數組中出現次數超過一半的數字

問題重述: 題目:數組中有一個數字出現的次數超過數組長度的一般,請找出這個數字。不存在則返回0.例如輸入一個長度爲9的數組{1,2,3,2,2,2,5,4,2}。由於數字2在數組中出現了5次,超過數組長度的一半,因此輸出2。 思路解析:

原创 劍指offer刷題————連續子數組的最大和

問題重述: 題目:輸入一個整型數組,數組裏有正數也有負數。數組中一個或連續的多個整數組成一個子數組。求所有子數組的和的最大值。要求時間複雜度爲O(n)。 例如輸入的數組爲{1,-2,3,10,-4,7,2,-5},和最大的子數組爲{3,1

原创 劍指offer刷題————字符串的排列

問題重述: 題目:輸入一個字符串,打印出該字符串中字符的所有排列。例如輸入字符串abc,則打印出由字符a、b、c所能排列出來的所有字符串abc、acb、bac、bca、cab和cba。 思路解析: 可以將字符串看成兩部分,第一個字符看成第

原创 劍指offer刷題————最小的k個數

問題重述: 題目:輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個主子,則最小的4個數字是1、2、3、4。 思路解析: 在不改變原數組的基礎上,我們可以建立一個大根堆,然後將數組的前k個數字插入到大根堆中。

原创 劍指offer刷題————二叉搜索樹與雙向鏈表

問題重述: 題目:輸入一個二叉搜索樹,將該二叉搜索樹轉換成一個排序的雙向鏈表。要求不能創建任何新的結點,只能調整書中結點指針的方向。如下圖: 思路解析: 首先我們知道二叉搜索樹的中序遍歷是有序的,因此我們可以先得到二叉搜索樹的中序遍歷序

原创 圖的深度遍歷(DFS)和廣度遍歷(BFS)詳解

目錄   1 前奏(鄰接表) 2 深度遍歷 3 廣度遍歷 1 前奏(鄰接表) 圖作爲種比較繁瑣的數據結構,在進行圖的操作之前,首先應該用合適的數據類型來存儲圖的信息。 我們使用鄰接表來存儲,它是一種鏈式的存儲結構。所謂鄰接表就是對途中的每

原创 牛客網錯題筆記:C/C++專項 :1-10

1 32位平臺上struct{unsigned char a,int b,short c}s;請問s的起始地址下面說法正確的是哪一個?() 正確答案應該是四字節對齊,因爲起始地址應該按照結構體中最大類型的大小對齊。 2  請問以下說法哪

原创 線性時間選擇(分治):找出一組數中的第k小元素||C++

問題是這樣的,有一組數據,請找出這組數據中的第k小的元素。 這個問題爲什麼叫線性時間選擇,我至今沒有弄清楚,忘大家能給解釋以下。 我在這裏給出上述問題的代碼: 這裏利用的是快排的分割算法。是採用分治法的思想,即將問題劃分規模更小的子問題。

原创 Redis之1——Redis簡介

目錄 1 爲什麼要有Reids? 2 什麼是NoSql 3 以電商場景爲例的海量用戶、高併發的解決方案 4 Redis的概念 5 redis的應用場景 1 爲什麼要有Reids? 在一些網站中,會在特定的時候出現兩種情況,海量用戶和高併發

原创 劍指offer刷題————二叉搜索樹的後序遍歷序列

問題重述: 題目:輸入一個整數數組,判斷該數組是不是某二叉搜索樹的後序遍歷的結果。如果是則返回true,否則返回false.假設輸入的數組任一兩個數組都不相同。 思路解析: 首先這個數組是搜索二叉樹的後序遍歷,因爲搜索二叉樹滿足左小右大的

原创 Redis之3———hash類型詳解:常用操作、業務場景

目錄 1 key的命名規範 2 hash類型 3 基本操作 1 hset key field value:添加修改數據 2 hget key field,hgetall key:獲取數據 3 hdel key field1 [field2