演算法和資料操作 面試題

2021-07-25 16:35:33 字數 1252 閱讀 9312

1.自己實現的快速排序

快速排序:

時間複雜度平均o(nlogn),空間複雜度為o(1)

void quicksort(int arr,int length)

int start = 0;

int end = length - 1;

int tmp = arr[start];

while (start != end)

if (end != start)

else//若end直接減到了等於start就說明不必做任何變動

while (arr[start] <= tmp&&startif (end != start)

}arr[start] = tmp;

quicksort(arr, start - 1);

quicksort(arr + start+1,length-start-1);

}

2.旋轉陣列的最小數字

int rotate(int arr, int length)

if (arr[mid]

< arr[end])//表示已經到達了

//第二個序列,這時候分界在前面

if (arr[mid] == arr[start] && mid != start)

if (arr[mid] == arr[end] && mid != end)

}return arr[start];

}

重點同樣需要注意特殊情況比如說

11101

3.關於斐波那契

用迴圈就好了,遞迴效率太低,但是其實有第三種方法把它看成矩陣來計算的,但是不實用,可以記著知道有這個就好了

斐波那契數列的變種題目出法

乙隻青蛙,一次只能跳一級或者兩級台階,那麼它跳上n級台階有多少種方法?

思路如下:

(1)青蛙跳台階,對於1階,只有一種

(2)對於兩階,有兩種

(3)對於三階,可以視作他第一次跳一階,第二次跳兩階,那麼

f(3) = f(2)+f(1)

(4)代入一般情況就可以知曉

f(n) = f(n-1)+f(n-2)

(5)由以上得出這個問題其實考察的也就是斐波那契數列而已(。。。熟練運用啊不要被坑)

還有例如用2*1的小方格2*8的矩形的

劍指offer面試題彙總 演算法和資料操作

面試題11 旋轉陣列最小數字 面試題12 矩陣中的路徑 面試題13 機械人的運動範圍 解題思路 面試題14 剪繩子 面試題15 二進位制中1的個數 求斐波那契數列的第n項。long long fibonacci unsigned int n long long fibonacci unsigned ...

大資料演算法面試題

本文參考並對部分內容進行了整理 1 給定 a b 兩個檔案,各存放 50 億個 url,每個 url 各佔 64 位元組,記憶體限制是 4g,讓你找出 a b 檔案共同的 url?1 可以估計每個檔案安的大小為 50g 64 320g,遠遠大於記憶體限制的 4g。所以不可能將其完全載入到記憶體中處理...

演算法面試題

1 兩個有序的陣列求中位數 時間複雜度o log n m 這個演算法有一定的缺陷,僅做參考 2 如何解決hash衝突 3 調整陣列順序使奇數字於偶數前面 void reorderoddeven int pdata,unsigned int length 4 鍊錶中倒數第k個節點 listnode f...