SS是途虎养车的一名技术人员,她每年双11的时候,会尝试清空自己购物车中“看起来便宜”的商品。她的购物车列表是有序的,如果一件商品,其价格比购物车中前一个商品和后一个商品的价格都低,则SS认为这件商品“看起来便宜”。
有一天,你趁她午睡且忘记锁屏登入了她的购物网站账号,想通过调整购物车顺序,来“帮助”她买到最多的的商品。
[1,2,3]
1
输入是一个整型数组,代表A现在购物车中的商品价格。输出经过重新排列之后,SS最多会购买的商品数量。示例中SS最多会购买1件商品(一个可能的排列为[3,1,2])
1. 在本题中,最多是指个数上最多;2. 第一个和最后一个商品,不符合“看起来便宜”的定义。
int reorder(int* prices, int pricesLen ) {
int flag = 0;
if(pricesLen%2==0)
flag=-1 ;
if(prices[pricesLen/2]==prices[pricesLen/2-1])
for(int i=pricesLen/2+1;i<pricesLen;i++){
if(prices[pricesLen/2]==prices[i])
flag --;
}
return pricesLen / 2 + (flag) ;
} import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param prices int整型一维数组 购物车中的商品价格列表
* @return int整型
*/
public int reorder (int[] prices)
{
Arrays.sort(prices);
int n = prices.length;
int m = n / 2;
int answer = m;
for (int i = 0; i < m; i++)
if (prices[i] == prices[i + m])
answer--;
if (n % 2 == 0 && prices[m - 1] < prices[m * 2 - 1])
answer--;
return answer;
}
}