有n個小朋友站成一排(編號從0到n-1),每個小朋友有乙個rating值,存放在ratings陣列中。老師需要給他們分配糖果,每個小朋友至少需要一顆糖果,對於任意相鄰的兩個小朋友i和i+1,rating值大的必須比rating值小的分配的糖果多(rating相同的沒必要分配一樣多的糖果)。
請計算最少需要多少顆糖果,才能完成上述分配。
提示:本題存在o(n)的演算法。
題目**:careercup和interviewstreet。
比較trick的題,其實想想就是連續遞增或者遞減序列的長度。
對第i個小朋友來說,如果往左連續有left個小朋友ratings比他小,所以這left個小朋友每個都要比左邊個至少多拿乙個糖果,所以第i個小朋友至少要拿left個糖果,對吧;
往右看也是一樣的,所以對第i個小朋友至少要max(left[i],right[i])個糖果,最後統計就好了。
//返回最少需要的糖果數
long long minimalcandies(vector&ratings)
for(int i=ratings.size()-2;i>=0;i--)
long long ans=0;
for(int i=0;i
各種面試題 小朋友拿糖果
小朋友拿資料 有兩個小朋友,玩乙個遊戲,遊戲的內容是 有乙個陣列,只有頭和尾可以取資料,一次只能取得乙個,誰拿到的資料和最大誰就贏了。現在假設兩個小孩都足夠聰明。你能否求出第乙個小孩,取得的和是多少 分析 首先讓我想到的是動態規劃,然後試圖給出公式。不管哪個小孩,我們用dp j 表示第一次拿可以拿到...
網易面試題 糖果謎題
程式設計題 糖果謎題 時間限制 1秒 空間限制 32768k 小明是幼兒園的一名老師。某天幼兒園園長給小朋友們每人發一顆糖果,小朋友們拿到後發現有一些同學拿到的糖果顏色和自己相同,有一些同學糖果顏色和自己不同。假定每個小朋友只知道有多少同學和自己拿到了相同顏色的糖果。上課後,有一部分小朋友興奮的把這...
各種面試題 大數乘法
上次同學在微軟就面到這個了。比較煩的是處理符號。有兩個注意的 第乙個是中間儲存結果要用vector不能用string,否則會溢位。二是注意有無符號時候,需要相乘的起始位置也不一樣。返回a b的結果 string multiply const string a,const string b if b ...