算法與數據結構
一、 簡介
本課程是基于數據結構來設計的,搜羅了各大公司面試過程中經常被問到的300多個算法題目,從中遴選出70道經典題目,分為單鏈表、數組、二叉樹、棧、數字、邏輯推理等多個類別。
本課程將培訓學員的邏輯思維能力,學以致用,在實戰中編寫出性能更好、邏輯更嚴謹的程序。
本課程適用于1-2年開發經驗的程序員,對設計模式和算法有一些了解。
二、 培訓大綱(2-4天)
第1天 上午 單鏈表
l 單鏈表的定義
l 單鏈表反轉
l 倒數第四個元素
l 中間元素
l 刪除無頭單鏈表的一個節點
l 合并兩個不交叉的有序鏈表
l 交換單鏈表中的任意兩個元素
l 判斷單鏈表是否有環
l 判斷兩個單鏈表是否相交,是則給出交點
l 用鏈表模擬大整數的加法運算
l 單鏈表排序
l 刪除單鏈表中重復的元素
第1天 下午 棧和隊列
l 棧和隊列的定義
l 設計含有min函數的棧,要去算法復雜度為o(1)
l 用兩個棧實現隊列
l 用兩個隊列實現棧
l 判斷棧的push、pop序列是否一致
l 遞歸反轉一個棧,要求空間復雜度o(1)
l 如何用一個數組實現兩個棧
l 如何用一個數組實現三個棧
第2天 上午 二叉樹
l 二叉樹的定義
l 三種周游方式
l 從頂部逐層打印二叉樹的節點數據
l 如果判斷一棵樹是否為平衡二叉樹
l 找出二叉樹上任意兩個節點的最近共同父結點
l 如何不用遞歸實現二叉樹的前序/后序/中序遍歷?
l 在二叉樹中找出和為某一值的所有路徑
l 把一個有序整數數組放到二叉樹中?
l 判斷整數序列是不是二叉搜索樹的后序遍歷結果
l 求二叉樹的鏡像
l 把二叉搜索樹轉變成排序的雙向鏈表
第2天 下午 數組
l 查找數組中的唯一的重復元素(2)
l 刪除數組中的唯一的重復元素(14)
l 刪除有序數組中的重復元素,空間復雜度O(26)
l 1到1000存放在1001個元素的數組中,如何找出其中的一個重復數字(6)
l 找出數組中只出現了奇數次的1個數字,其它元素都成對出現(7)
l 查找數組的最大最小值(3)
l 長度為n的數組,存放了0到n范圍內的整數,如何判斷其中是否有重復元素,要求空間復雜度0(1)(8)
l 數組的循環右移(13)
l “最大和”連續子序列(20)
l 調整數組順序使奇數位于偶數前面(28)
l 判斷有序數組中是否存在兩個唯一的元素(45)
第3天 上午 數字
l 按位反轉數字(1234=)4321)
l 求從1加到n
l 用加法實現減法
l 把字符串轉換成蒸熟
l Fibnacci數列的3種算法
l 整數分割
l 大數的模計算
l Excel的數字轉字母
l 根據(1,5)隨機數生成器,生成(1,7)隨機數
l 計算質數、完全數、水仙花數、快樂數、回文數
l 刪除100位數字后的最大數
l 找出2n個數字中重復n次出現的數字
第3天 下午 雜題
l 撲克牌洗牌算法
l 判斷一個點是否在三角形內
l IntStr函數的實現
l 寫一個檢查字符串是否是整數的函數,如果是則返回這個整數。
l 遞歸反轉一個棧
l 棧的排序
l 八皇后問題
l 8x8的棋盤一共有多少長方形和正方形
l 拈
第4天 上午 邏輯推理
l 給你一個打亂的魔法,如何在第二天把它調整好
l 一根金條付薪水
l 尋找四個藥丸罐子中某個被污染的藥丸罐
l 大象背香蕉問題
l 谷歌賽馬
l 九個點畫十條直線,每條直線至少有三個交點
l 燒繩子算時間
l 高樓扔雞蛋
l 海盜分金子
l 有7克、2克砝碼各一個,天平一只,如何只用天平稱三次將140克的鹽分成50、90克各一份
文章列表