原创 牛客網《劍指Offer》(7)斐波那契數列

題目描述 大家都知道斐波那契數列,現在要求輸入一個整數n,請你輸出斐波那契數列的第n項(從0開始,第0項爲0)。n<=39 題目分析 首先理解什麼是斐波那契數列:即f(1) = 1 ,f(2) = 1,f(n) = f(n-1) +f(n

原创 大話設計模式(6)原型模式

一、場景及UML圖 其實就是類的複製,顯式的調用拷貝構造函數。二者也是有區別的。 拷貝構造函數 類是已知的,原型模式類可以是未知的。或者換一個方式說: 原型模式生成的新對象可能是一個派生類。拷貝構造函數生成的新對象只能是類本身。 原型模式

原创 大話設計模式(3)設計原則

一、單一職責原則(Chapter3) (1)就一個類而言,應該僅有一個引起它變化的原因。 (2)如果一個類承擔的職責過多,就等於把這些職責耦合在了一起,一個職責的變化可能會削弱或者抑制這個類完成其他職責的能力。這種耦合會導致脆弱的設計,當

原创 大話設計模式(5)代理模式

一、場景及UML圖 簡單理解:A通過B與C發生關係,此時,對於C而言只知道B的存在,A是透明的。其實底層的方法都是A在實現。相當於在B內部創建了一個匿名的A。 二、概念 代理模式:爲其他對象提供一種代理以控制對這個對象的訪問。 三、應用

原创 牛客網《劍指Offer》(15)反轉鏈表

題目描述 輸入一個鏈表,反轉鏈表後,輸出新鏈表的表頭。 題目分析 鏈表的轉置是一個很常見、很基礎的數據結構題了,非遞歸的算法很簡單,用三個臨時指針 pre、head、next 在鏈表上循環一遍即可。遞歸算法也是比較簡單的,但是如果思路不清

原创 大話設計模式(4)裝飾模式

一、場景及UML圖 場景:又稱修飾模式,就是對類起修飾作用。如類“人”,用類“衣服”來修飾。 關鍵詞:Decorator()函數/setComponent()函數。 二、概念 裝飾模式:動態地給一個對象添加一些額外的職責,就增加功能來說

原创 大話設計模式(9)外觀模式

一、場景及UML圖 簡單理解:就是爲一堆複雜代碼提供一個抽象接口,使得別的模塊調用的時候不需要再關心底層調用細節。 關鍵詞:增加Facade層。 二、概念 外觀模式:爲子系統中的一組接口提供一個一致的界面,此模式定義了一個高層接口,這個

原创 大話設計模式(7)工廠方法模式

一、場景及UML圖 二、概念 工廠方法模式(Factory Method):定義一個用於創建對象的接口,讓子類決定實例化哪一個類。工廠方法是一個類的實例化延遲到其子類。 三、包含的角色 (1)抽象工廠 (2)具體工廠 (3)抽象產品 (

原创 防止頭文件被重複包含的兩種方法

在windows平臺下,有一個很方便的宏: #pragma once 指定當前文件在構建時只被包含(或打開)一次,這樣就可以減少構建的時間,因爲加入#pragma once後,編譯器在打開或讀取第一個#include 模塊後,就不會再打開

原创 大話設計模式(2)策略模式

一、場景及UML圖 如超市打折活動,可能使用不同的打折策略,將各種策略封裝,後續只需要修改策略即可。 二、概念 策略模式:他定義了算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓算法的變化,不會影響到使用算法的客戶。 三、優點

原创 大話設計模式(11)觀察者模式

一、場景及UML圖 簡單描述,就是爲了實現一個對象的變更導致一系列對象的變更的場景,但同時要依賴倒置。 關鍵詞:Subject維護一個Observer列表,Subject執行Notify()時就執行列表中的每個Observer的Upda

原创 c/c++工程中的各種文件

lib是和dll對應的。lib是靜態鏈接庫的庫文件,dll是動態鏈接庫的庫文件。所謂靜態就是link的時候把裏面需要的東西抽取出來安排到你的exe文件中,以後運行你的exe的時候不再需要lib。所謂動態就是exe運行的時候依賴於dll裏面

原创 進程與線程相關(一)

程序和進程        程序:是指編譯好的二進制文件,在磁盤上,不佔用系統資源(cpu、內存、打開的文件、設備、鎖....)        進程:是一個抽象的概念,指程序在計算機中的一次執行過程,進程是一個動態的過程描述,佔有計算機的資

原创 秋招筆試(五)小米科技

一、單項選擇 1、已知5個數字,可組成多少條二叉搜索樹。 2、各排序算法時間複雜度(最優、最差、平均)、空間複雜度、是否穩定。 3、有向無環圖相關性質。 4、設計模式相關(裝飾、懶漢單例、適配器、簡單工廠) 5、數據庫主鍵、外鍵、左右連接

原创 牛客網《劍指Offer》(25) 複雜鏈表的複製

題目描述 輸入一個複雜鏈表(每個節點中有節點值,以及兩個指針,一個指向下一個節點,另一個特殊指針指向任意一個節點),返回結果爲複製後複雜鏈表的head。(注意,輸出結果中請不要返回參數中的節點引用,否則判題程序會直接返回空) 題目分析 複