有一排商品,每一个商品都有自己的价值,现在需要花一定金额购买这些商品。规则是:如果一个商品的价值比它旁边的一个商品要高,那么这个商品就必须比它旁边的商品花费更多金额。所有的商品至少要进行一次金额购买。假设一次购买花费金额单位为1,最少需要多少金额可以购买所有商品? 现给定一个数组,数组元素表示每个商品的价值。请编写代码输出最少需要花费的金额。-笔试面试资料

这是qklbishe.com第15194 篇笔试面试资料
提供答案分析,通过本文《有一排商品,每一个商品都有自己的价值,现在需要花一定金额购买这些商品。规则是:如果一个商品的价值比它旁边的一个商品要高,那么这个商品就必须比它旁边的商品花费更多金额。所有的商品至少要进行一次金额购买。假设一次购买花费金额单位为1,最少需要多少金额可以购买所有商品? 现给定一个数组,数组元素表示每个商品的价值。请编写代码输出最少需要花费的金额。-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

有一排商品,每一个商品都有自己的价值,现在需要花一定金额购买这些商品。规则是:如果一个商品的价值比它旁边的一个商品要高,那么这个商品就必须比它旁边的商品花费更多金额。所有的商品至少要进行一次金额购买。假设一次购买花费金额单位为1,最少需要多少金额可以购买所有商品?

现给定一个数组,数组元素表示每个商品的价值。请编写代码输出最少需要花费的金额。

有一排商品,每一个商品都有自己的价值,现在需要花一定金额购买这些商品。规则是:如果一个商品的价值比它旁边的一个商品要高,那么这个商品就必须比它旁边的商品花费更多金额。所有的商品至少要进行一次金额购买。假设一次购买花费金额单位为1,最少需要多少金额可以购买所有商品?    现给定一个数组,数组元素表示每个商品的价值。请编写代码输出最少需要花费的金额。 DarlingQin
   

    public int cost (int[] array) {         // write code here         int result = array.length;         int minIndex =0;         for(int i =0;i<array.length;i++){             if(array[i]<array[minIndex]){                 minIndex =i;             }         }         int count =0;         for(int j= minIndex;j>0;j--){             if(array[j]<array[j-1]){                 count++;                 result+=count;             }else if(array[j]>array[j-1]){                 count--;             }        }         int count2=0;         for(int j=minIndex;j<array.length-1;j++){              if(array[j]<array[j+1]){                 count2++;             }else if(array[j]>array[j+1]){                 count2--;             }              result+=count2;         }                   return result;      

把所有的商品价值全部先置为1,则视全部商品为同等价值商品,总价格为商品数量即数组长度,然后找到价值最小的商品的索引,向左遍历,遇到价值更大的商品则价值加1(给出一个标识符count来标志价值加多少),遇到价值小的则减1,相等则不变,每移动一次则加上增加的价值即可,然后向右遍历,与向左遍历同理。

2021-08-26 20:34:38 回复(0)
有一排商品,每一个商品都有自己的价值,现在需要花一定金额购买这些商品。规则是:如果一个商品的价值比它旁边的一个商品要高,那么这个商品就必须比它旁边的商品花费更多金额。所有的商品至少要进行一次金额购买。假设一次购买花费金额单位为1,最少需要多少金额可以购买所有商品?    现给定一个数组,数组元素表示每个商品的价值。请编写代码输出最少需要花费的金额。 区块链毕设学生853297935号
public int cost (List<int> array) {         int[] cost = new int[array.Count];         int offset = 0;         cost[0] = 1;         for (int i = 1; i < array.Count; i++)         {             if (array[i] > array[i - 1])//右边大             {                 cost[i] = cost[i - 1] + 1;             }             else if(array[i] == array[i - 1])             {                 cost[i] = cost[i - 1];             }             else//右边小             {                 cost[i] = cost[i - 1] - 1;                 if ((cost[i] + offset) == 0)                 {                     offset++;                 }             }         }         int sum = 0;         for (int i = 0; i < cost.Length; i++)         {             sum += cost[i];         }         sum += cost.Length * offset;         return sum;     }
代码如上。
    

2021-08-26 18:02:37 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 有一排商品,每一个商品都有自己的价值,现在需要花一定金额购买这些商品。规则是:如果一个商品的价值比它旁边的一个商品要高,那么这个商品就必须比它旁边的商品花费更多金额。所有的商品至少要进行一次金额购买。假设一次购买花费金额单位为1,最少需要多少金额可以购买所有商品? 现给定一个数组,数组元素表示每个商品的价值。请编写代码输出最少需要花费的金额。-笔试面试资料

提供最优质的资源集合

立即查看 了解详情