微軟電面試題

2022-08-30 10:39:14 字數 486 閱讀 7029

問題描述:

給定乙個無序的陣列,求至少插入多少次可以使得這個陣列有序?

例如:5,1,2,3  經過一次插入 1,2,3,5

思路:其實只要保證原始陣列中最長的遞增的那些數字保持不動,其餘的數字依次插入即可。

因此該問題轉變成求最長遞增序列。

利用陣列,d[i]表示從位置0到位置i最長的遞增子串行的長度。

若ja[j],且初始d[i] < d[j]時,我們可以更新d[i]。

當a[i]>a[j],找到乙個最大的d[j]。d[i] =max(d[j]) + 1.

**:

1

int f(int a, intn)2

16 d[i] = t + 1;17

}18 t = d[0

];19

for(int i = 1; i < n; i++)

2024

return n-t;

2526 }

微軟面試題

題目 小明和小強都是張老師的學生,張老師的生日是m月n日,2人都知道張老師的生日是下列10組中的一天,張老師把m值告訴了小明,把n值告訴了小強,張老師問他們知道他的生日是那一天嗎?3月4日 3月5日 3月8日 6月4日 6月7日 9月1日 9月5日 12月1日 12月2日 12月8日 小明說 如果我...

微軟面試題

fly.c4 推薦您必看!六.演算法題 說明 這些題就不是什麼花樣了,考的是你的基礎知識怎麼樣。再聰明而沒有實學的人都將會被這些題所淘汰。1.鍊錶和陣列的區別在 2.編寫實現鍊錶排序的一種演算法。說明為什麼你會選擇用這樣的方法?3.編寫實現陣列排序的一種演算法。說明為什麼你會選擇用這樣的方法?4.請...

微軟面試題

1.燒一根不均勻的繩,從頭燒到尾總共需要1個小時。現在有若干條材質相同的繩子,問如何用燒繩的方法來計時乙個小時十五分鐘呢?答 點燃繩子a的兩端,和繩子b的 一端,當a燒完時,b餘下的可以燒半個小時 這時把b的另一端點燃,並開始計時,等b燒完時可確定15分鐘,然後再點燃繩子c 兩端 燒完總時間為1小時...