原创 二叉樹前序、中序和後序的非遞歸遍歷

把經典問題:二叉樹的非遞歸遍歷理了理,順便做個筆記。 核心思路就是節點的壓棧和出棧。 #include <iostream> #include<stack> #include<vector> using namespace std;

原创 哈希表HashTable

哈希表概念 哈希表(Hash Table),又稱散列表,是字典結構的其中一種表達方式,可以根據數對的鍵值(Key value)映射到數組中的位置而對元素進行直接訪問,時間複雜度爲O(1)。其實現原理很簡單,即使用一個哈希函數把鍵值轉換成一

原创 Median of Two Sorted Arrays

問題描述 There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays

原创 動態規劃——0-1揹包問題

問題描述 給定n種物品和一揹包。物品i的重量是wi,其價值爲vi,揹包的容量爲C。問:應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大? 算法設計分析 揹包問題要求達到物品總價值的最優化,每一次選擇作爲一個階段,根據前一個階段的解

原创 Google File System 學習總結

趁着4月份找實習的契機,學習了MIT 6.824的課程推薦論文Google File System。篇幅很長,感覺不是完全理解了,先轉載了一篇覺得整理得比較好的筆記,方便後續的進一步學習。 GFS 的主要需求 在學習 GFS 的原理前,首

原创 分支定界法——旅行商(TSP)問題

問題描述 給定一個n頂點網絡(有向或無向),找出一個包含n個頂點且具有最小耗費的換路。任何一個包含網絡所有頂點的換路稱爲一個旅行。旅行商問題(Traveling Salesman Problem,TSP)是要尋找一條耗費最少的旅行。

原创 Word Break Ⅱ

問題描述 Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, add spaces in s to cons

原创 動態規劃

算法思想 dynamic programming is a method for solving a complex problem by breaking it down into a collection of simpler sub

原创 回溯法——旅行商(TSP)問題

問題描述 給定一個n頂點網絡(有向或無向),找出一個包含n個頂點且具有最小耗費的換路。任何一個包含網絡所有頂點的換路稱爲一個旅行。旅行商問題(Traveling Salesman Problem,TSP)是要尋找一條耗費最少的旅行。

原创 Perfect Squares——動態規劃

問題描述 Given a positive integer n, find the least number of perfect square numbers (for example, 1, 4, 9, 16, ...) which

原创 優化程序性能

一般來說,程序優化主要是以下三個步驟:   1. 高級設計 —— 算法和數據結構選擇   2. 基本編碼原則 —— 編碼優化   3. 低級優化 —— 代碼結構化 高級設計 算法的選擇是必須首要考慮的,也是最重要的一步。一般我們需要分析

原创 深入理解浮點數類型float和double

浮點數的表示 浮點數格式 首先看一下64位機器中的浮點數float和double格式: 浮點數位表示有三個字段,分別對這些值進行編碼:符號位s,階碼字段exp和小數字段frac。單精度float浮點格式中,s、exp和frac分別爲1,

原创 分支定界法——0-1揹包問題

問題描述: 給定n種物品和一揹包。物品i的重量是wi,其價值爲vi,揹包的容量爲C。問:應如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大? 算法設計分析: 和回溯法中的界定函數類似,對每一個活動節點N,計算收益的上限maxPoss

原创 Sort List —— 歸併排序

問題描述 Sort a linked list in O(n log n) time using constant space complexity. 算法分析 1、要求時間複雜度爲 O(n log n),可以考慮歸併與快排; 2、本文使

原创 回溯法和分支定界法

概述 ​ 要求解一個問題,最可靠的方法是:列出所有候選解,然後逐個檢查,理論上在遍歷了所有的候選解之後,就能得到所需要的解。但是,對於實際運用中的問題,候選解的規模龐大,即使使用速度最快的計算機,也很難在合理的時間內解決。