【左神】
【問題描述】
【基礎】
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張 下半堆 接著就開始洗牌的過程,先放下右手的最後一張牌,再放下左手的最後一張牌,...