牛客網演算法筆記 分糖果問題

2021-08-09 12:28:57 字數 1588 閱讀 9718

【左神】

【問題描述】

【基礎】

1.每個孩子不管得分多少,最少分到乙個糖果。

2.任意兩個相鄰的孩子之間,得分較多的孩子必須拿多一些的糖果

根據左講解的坡度我們來理解一下。見下圖

大概思想應該是這樣。**我拷貝的別人的,圖是我自己理解的。可以複製**看一看。

public class problem_07_candyproblem 

int index = nextminindex1(arr, 0);

int res = rightcands(arr, 0, index++);

int lbase = 1;

int next = 0;

int rcands = 0;

int rbase = 0;

while (index != arr.length) else if (arr[index] < arr[index - 1]) else

} return res;

} public static int nextminindex1(int arr, int start)

} return arr.length - 1;

} public static int rightcands(int arr, int left, int right)

public static int candy2(int arr)

int index = nextminindex2(arr, 0);

int data = rightcandsandbase(arr, 0, index++);

int res = data[0];

int lbase = 1;

int same = 1;

int next = 0;

while (index != arr.length) else if (arr[index] < arr[index - 1]) else

index = next;

lbase = 1;

same = 1;

} else

} return res;

} public static int nextminindex2(int arr, int start)

} return arr.length - 1;

} public static int rightcandsandbase(int arr, int left, int right) else

} return new int ;

} public static void main(string args) ;

system.out.println(candy1(test1));

int test2 = ;

system.out.println(candy2(test2));

}}

牛客網演算法筆記 完美洗牌問題

引用 左神 問題描述 假設有長度為2 n的陣列 a1,a2,a3,an,b1,b2,b3,bn 洗牌後的順序為 b1,a1,b2,a2,bn,an 要求 空間複雜度為o n 時間複雜度為o 1 問題分析 在考慮空間和時間複雜度的情況下,該題目室友難度的。左神講解的座標連環懟方法我覺得很有意思,解決技...

牛客網刷題之分糖果

題目描述 有n個小朋友站在一排,每個小朋友都有乙個評分 你現在要按以下的規則給孩子們分糖果 每個小朋友至少要分得一顆糖果 分數高的小朋友要他比旁邊得分低的小朋友分得的糖果多 你最少要分發多少顆糖果?題目分析 給定陣列每個位置表示乙個排成一排的小朋友,每個位置上是小朋友的評分,返回結果是每個小朋友的糖...

牛客網做題筆記 洗牌問題

洗牌在生活中十分常見,現在需要寫乙個程式模擬洗牌的過程。現在需要洗2n張牌,從上到下依次是第1張,第2張,第3張一直到第2n張。首先,我們把這2n張牌分成兩堆,左手拿著第1張到第n張 上半堆 右手拿著第n 1張到第2n張 下半堆 接著就開始洗牌的過程,先放下右手的最後一張牌,再放下左手的最後一張牌,...