原创 STRATEGY(策略)-對象行爲模式

1.意圖 定義一系列的算法,把它們一個個封裝起來,並且使它們可以互相替換。使得算法獨立於客戶而變化。 2.適用性 許多相關的類僅行爲有異:提供了一種用多個行爲中的一個來配置一個類的方法。 需要使用一個算法的不同變體:這些變體實現

原创 6.繼承與面向對象設計

Item32:確定你的public繼承塑膜出is-a關係 Make sure public inheritance “is-a”. Item33:避免遮掩繼承而來的名稱 Avoid hiding inherited names.

原创 10個房間裏放着隨機數量的金幣

10個房間裏放着隨機數量的金幣。每個房間只能進入一次,並只能在一個房間中拿金幣。 一個人採取如下策略:前四個房間只看不拿。隨後的房間只要看到比前四個房間都多的金幣數, 就拿。否則就拿最後一個房間的金幣。編程計算這種策略拿到最多金幣的概率。

原创 Palindrome Linked List

Given a singly linked list, determine if it is a palindrome. struct ListNode { int val; ListNode *next

原创 310. Minimum Height Trees

310. Minimum Height Trees For a undirected graph with tree characteristics, we can choose any node as the root. The

原创 4.設計與聲明

Item18:讓接口易於使用,難於誤用 Make interfaces easy to use correctly and hard to use incorrectly. shared_ptr定製刪除器可以防範DLL問題(對象

原创 5.實現

Item26:儘可能延後變量定義式的出現時間 Postpone variable definitions as long as possible. 增加清晰度 改善程序效率,避免沒必要的構建 Item27:儘量少做轉型動作 M

原创 309.Best Time to Buy and Sell Stock with Cooldown

1.基本思路: 此題可通過DP來解決,但狀態轉移方程的構想不是那麼明顯,首先可以通過兩個數組來表示買與賣的信息: buy[i]:表示第i天爲止,最近一次股票購入後所持有的利潤 sell[i]:表示第i天爲止,最近一次股票拋售後所

原创 編程之美2.8找符合條件的整數

問題: 任意給定一個正整數N,求一個最小的正整數M(M>1),使得N*M的十進制表示形式裏只含有1和0。 思路: 建立模N的餘數記錄表,通過動態規劃的思想找到相應的M; 例子: 當N=3時: Record 1 10 100

原创 227. Basic Calculator II

常用方法爲兩個棧,數值棧與操作符棧,每次操作符入棧前比較優先級,小的推遲運算。 以下是不用棧的方法, class Solution { public: int calculate(string s) {

原创 Linux命令:文件處理

文件處理 1.瀏覽文件 ‘.‘:表示當前目錄 ‘..‘:表示上級目錄 cd(change directory):切換目錄,無參數時回到用戶目錄 pwd (print working directory):輸出當前工作目錄 ls:列出文

原创 Linux命令:系統

系統基礎命令 1.進程管理 1.1進程信息 ps:顯示當前控制檯下,當前用戶的進程,僅某個時間點 top:實時顯示進程信息 1.2結束進程 kill -s signal pid:向pid發送信號,默認爲TERM killall p

原创 從零開始寫光柵化渲染器0:創建windows窗口

0.光柵化渲染器概述 主要實現了以下功能: 2D部分: 光柵化2D點 光柵化2D直線 光柵化2D三角形 3D部分: 把頂點從三維世界空間變換至二維屏幕空間,把頂點連線(如各種三維正多面體)光柵化成wire frame模型 三角形光柵

原创 從零開始寫光柵化渲染器4:三維物體的呈現

1.三維物體的呈現過程 這裏主要詳細介紹投影轉換及屏幕映射。 2.投影轉換 當模型轉換到相機空間時,便要對頂點進行裁剪處理,剔除那些不在視錐體之內的頂點。 視錐體的空間如下,包含一個近裁剪面和一個遠裁剪面,以及一個視角角度Fov,視

原创 從零開始寫光柵化渲染器2:直線繪製光柵化算法

直線繪製光柵化算法 1.數值微分DDA(Digital Differential Analyzer)算法 1.1原理 引入增量思想,以dx≥dy(斜率[0,1])爲例,考慮直線y=kx+b,當x步進爲1時,y步進爲k,即yi+1=yi+k