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; } }