华为:N个同学站成一排,发饼干至少每人一个,相邻分值高的可以多分一个以上饼干,求问至少需要发多少个饼干满足要求
生活随笔
收集整理的這篇文章主要介紹了
华为:N个同学站成一排,发饼干至少每人一个,相邻分值高的可以多分一个以上饼干,求问至少需要发多少个饼干满足要求
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
N個同學站成一排,發(fā)餅干至少每人一個,相鄰分值高的可以多分一個以上餅干,求問至少需要發(fā)多少個餅干滿足要求
華為面試被問手撕這道題。
輸入分值:【1,2,3】
輸出:5
解析:3+1+1 = 5。
但是要考慮到
輸入分值:【3,4,3】
輸出:4
解析:3+1。4只需要算一次就行。
解答思路:new兩個數(shù)組,兩趟遍歷,左向右遍歷,再右向左遍歷,分別比較,最后比較兩個數(shù)組同位置的數(shù),取最大,累加。?
public class FaBingGan {public int faBingGan(int[]array){int len = array.length;if(len==0) return 0;int[] left = new int[len];int[] right = new int[len];for(int i = 0;i<len-1;i++){if(array[i]>array[i+1]){left[i] += 1;}}for(int j = len-1;j>0;j--){if(array[j]>array[j-1]){right[j] += 1;}}int count = 0;for(int s = 0;s<len;s++){if(left[s]>right[s]){count += left[s];}else{count += right[s];}}return count+len;}public static void main(String[] args) {int [] array = {3,4,3};System.out.println(new FaBingGan().faBingGan(array));} }?
總結
以上是生活随笔為你收集整理的华为:N个同学站成一排,发饼干至少每人一个,相邻分值高的可以多分一个以上饼干,求问至少需要发多少个饼干满足要求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PV、UV、VV
- 下一篇: redis:RDM连接阿里云redis服