原创 基礎問題[ 快速排序 ]、[ 歸併排序 ]

1. 快速排序: 快速排序是C.R.A.Hoare於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其爲分治法(Divide-and-ConquerMethod)。 該方法的基本思想是: 1.先從數列中取出一個數作爲基準

原创 面試問題(非編程)彙總

1. 堆棧底層操作系統實現    SS: 棧段寄存器,32位下是一個selector。     EBP:存儲棧的底部。 ESP:指向棧的頂部。    當函數調用時:一般是 #進入函數,現在esp指向棧頂,其值即 [CS 和 EIP ] p

原创 Range Minimum Query( RMQ )

RMQ (Range Minimum/Maximum Query)問題是指:對於長度爲n的數列A,回答若干詢問RMQ(A,i,j)(i,j<=n),返回數列A中下標在i,j裏的最小(大)值,也就是說,RMQ問題是指求區間最值的問題。 方法

原创 sizeof [字節對齊]

怎麼判斷內存對齊規則,sizeof的結果怎麼來的,要牢記以下3條原則:(在沒有#pragma pack宏的情況下,看最後一行) 1:數據成員對齊規則:結構(struct)(或聯合(union))的數據成員,第一個數據成員放在offse

原创 線段樹的應用

定義線段樹在區間[i, j] 上如下: 第一個節點維護着區間 [i, j] 的信息。  if i<j , 那麼左孩子維護着區間[i, (i+j)/2] 的信息,右孩子維護着區間[(i+j)/2+1, j] 的信息。  應用範圍:對一個區

原创 常見面試題合集

1. N對括號的所有合法排列 題目:給定N對括號,輸出其所有的合法的組合狀態,例如,N=3,所有的合法狀態爲:"((()))”, “(()())”, “(())()”, “()(())”, “()()()” 解法1, DFS: 在每個i

原创 求最小絕對值子串、一個整數數組求兩兩之差絕對值最小值

1. 求最小絕對值子串 1) 暴力求解O(n^2) 2) ... 2.求整數數組兩兩之差絕對值最小值(不要求求出具體哪兩個整數) 1) 暴力求解 或  對相鄰元素作差從而轉化爲 問題1:  b1= a2-a1,  b2=a3-a2,  

原创 兩個數組元素(相加、相乘)相關的問題

1.兩個數組兩個元素之和的最小K個值: 要求複雜度低於O(n^2). 已知A B兩個數組,元素有序,構造新的集合S={x+y | x屬於A, y屬於B} 求S中最小的k個元素,最優解法。 2.兩個數組(正數)兩個元素之積的最小K個值

原创 最長公共了序列、最長公共子串

1. 最長公共了序列( LCS )問題     用 lcs( i, j ) 表示 X[ 1...i ] 與 Y[ 1...j ] 的最長公共子序列長度。    則:    lcs( i, j ) =      1)  i == 0 or

原创 後綴數組

參考: 後綴數組就是將字符串所有後綴排序後的數組,設字符串爲S,令後綴Suffix(i)表示S[i..len(S)]。用兩個數組記錄所有後綴的排序結果: Rank[i]記錄Suffix(i)排序後的序號,即Suffix[i]在所有後綴中

原创 由前序、中序遍歷,求二叉樹的結構

代碼如下: #include "stdafx.h" #include <string> using namespace std; string pre = "alicloud"; string in = "illcaudo"; ty

原创 大話系列

1. PHP性能問題 關於PHP,很多人的直觀感覺是PHP是一種靈活的腳本語言,庫類豐富,使用簡單,安全,非常適合WEB開發,但性能低下。 從原理分析PHP的性能,主要從以下幾個方面:內存管理、變量、函數、運行機制、網絡模型來進行分析。內

原创 洗牌程序

一、基本思路及證明: 基本思路是:先初始化數字序列,然後爲每個位置依次生成一個與之交換的隨機位置,如果生成的隨機位置不是它本身就執行交換操作。 最早提出這個洗牌方法的是 Ronald A. Fisher 和 Frank Yates,即 

原创 P2P穿透UDP/TCP原理

轉自:   前言     NAT技術的出現從某種意義上解決了IPv4的32位地址不足的問題,它同時也對外隱藏了其內部網 絡的結構。NAT設備(NAT,一般也被稱爲中間件)把內部網絡跟外部網絡隔離開來,並且可以讓內部的主機可以使用一個

原创 設計一種數據結構,使得取中位數的時間複雜度在 O(1)

設計一種數據結構,使得取中位數的時間複雜度在 O(1), 元素插入時間複雜度爲log(n): 1. 可以建造一棵二叉排序樹, 保證 node_num( root->left )-node_num( root->right ) == 0 或