有n塊積木,每塊積木有體積vol
和重量weight
兩個屬性,用二元組(vol, weight)表示。積木需要搭成豎直的塔狀,上面積木的體積和重量必須都比它下面的積木小。問最多可以搭多少個積木。
樣例:
有7個積木boxes:題目**:cracking the coding interview 9.7[(65, 100), (70, 150), (56, 90), (75, 190), (60, 95), (68, 110), (80, 12)]
最多可以搭6個積木,從上到下分別為:
(56, 90), (60, 95), (65, 100), (68, 110), (70, 150), (75, 190)
所以函式應該返回6。
其實就是個最長遞減子串行的題,先排序,樸素的辦法是o(n2)的,如果是一維的話可以用二分查詢優化為o(nlong),但是二維的貌似這個優化行不通。
/*積木的定義(請不要在**中定義該結構)
struct box ;*/
struct compare
};int maxboxes(vector&boxes)
longest[i]=t;
} return *max_element(longest.begin(),longest.end());
}
各種面試題 大數乘法
上次同學在微軟就面到這個了。比較煩的是處理符號。有兩個注意的 第乙個是中間儲存結果要用vector不能用string,否則會溢位。二是注意有無符號時候,需要相乘的起始位置也不一樣。返回a b的結果 string multiply const string a,const string b if b ...
各種面試題 分配糖果
有n個小朋友站成一排 編號從0到n 1 每個小朋友有乙個rating值,存放在ratings陣列中。老師需要給他們分配糖果,每個小朋友至少需要一顆糖果,對於任意相鄰的兩個小朋友i和i 1,rating值大的必須比rating值小的分配的糖果多 rating相同的沒必要分配一樣多的糖果 請計算最少需要...
各種面試題 鍊錶相關
1.判斷是否有環 bool existcircle listnode head return false 2.找環的起始位置 這個在紙上畫個環就能看出相遇的地方到起始位置與表頭到起始位置的距離是相等的。所以相遇後把乙個放到頭去再相遇就好了。listnode findcirclestart listn...