原创 高頻算法面試題學習總結----線性結構3:驗證括號

題目:給你一個包含括號的字符串,判斷是否正確。 輸入1:equation = "([][]{})" 輸出1:true 輸入2:equation = "([)]" 輸出2:false 思路1:利用棧 代碼實現: #include<io

原创 高頻算法面試題學習總結----樹形結構1:尋找變化

題目:一個數組,前段是0, 後段是1。你能否找到, 出現的第一個1。 輸入1: nums = {0, 0, 0, 1, 1, 1, 1} 輸出1: 3 輸入2: nums = {0, 0, 1, 1, 1, 1, 1, 1, 1, 1

原创 高頻算法面試題學習總結----線性結構2:合併數組

題目: 有兩個排序的數組,nums1和nums2,將這兩個數組合併成新的排序數組,並且放入nums1中。 輸入: nums1 = {4, 5, 7, 10, 0, 0, 0} length1 = 4 nums

原创 高頻算法面試題學習總結----線性結構1:兩數之和

題目:有一個整數數組nums,能否從中取出兩個數,使他們的和爲target。 輸入1: nums = {4,5,7,10} target  = 12 輸出1: true 輸入2: nums = {4,5,7,10} target

原创 紅黑樹詳解及其模板類實現

一、歷史 1972年,Rudolf Bayer發明了一種數據結構,這是一種特殊的4階B樹。這些樹維護從根到葉的所有路徑保持相同數量的節點,從而創建完美平衡的樹。但是,它們不是二叉搜索樹。Bayer在他的論文中將它們稱爲“對稱二叉B樹”(s

原创 B樹詳解及其模板類實現

一、背景 1、分級存儲         現代電子計算機發展速度空前,然而從實際應用的需求來看,問題規模的膨脹卻遠遠快於存儲能力的增長。以數據庫爲例,在20世紀80年代初,典型數據庫的規模爲10~100MB,而三十年後,典型數據庫的規模已需

原创 嵌入式學習----綜觀

  一、計算機基礎 (a)硬件:電子、計算機、計算機組成、通信 (b)軟件:編譯器、語言、算法、操作系統、軟件工程 (c)網絡:互聯網歷史,互聯網組成結構 (d)行業:IT行業分類,各行業介紹,行業方案的重要性 二、嵌入式技術  (a)基

原创 分治法構造格雷碼

題目        格雷碼是一個長度爲2^n的序列,序列中無相同元素,且每個元素都是長度爲n的二進制位串,相鄰元素恰好只有1位不同。例如長度爲2^3的格雷碼爲(000,001,011,010,110,111,101,100)。設計分治算法

原创 分治法解決凸包問題

問題        設p1=(x1,y1),p2=(x2,y2),...,pn=(xn,yn)是平面上n個點構成的集合S,凸包問題是爲集合S構造最小凸多邊形。思路        設p1=(x1,y1),p2=(x2,y2),...,pn=

原创 劃分集合的題目----引申:數組中位數O(n)時間複雜度求法

題目        設S是n(n爲偶數)個不等的正整數的集合,要求將集合S劃分爲子集S1和S2,使得|S1|=|S2|=n/2,且兩個子集元素之和的差達到最大。分析    最容易想到的做法是先進性快速排序,則前半個數組即爲S1,後半個數組

原创 分治法求數組衆數

1.設計思想        首先利用快排的partition進行劃分,在分區的同時統計與pivot相等的元素的個數n(重數),如果n都大於pivot左右兩邊元素的個數,那它就是衆數,否則選取比n大或等的分區採用同樣的方法進行遞歸,並與原來

原创 分治法解決最近點對問題

問題        給定平面上n個點,找其中的一對點,使得在n個點的所有點對中,該點對的距離最小。嚴格地說,最接近點對可能多於1對。爲了簡單起見,這裏只限於找其中的一對。原理(這段爲抄襲https://blog.csdn.net/liuf

原创 AVL樹的模板類實現

一、介紹       在計算機科學中,AVL樹是最先發明的自平衡二叉查找樹。在AVL樹中任何節點的兩個子樹的高度最大差別爲1,所以它也被稱爲高度平衡樹。查找、插入和刪除在平均和最壞情況下的時間複雜度都是{\displaystyle O(\