日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

天池 在线编程 聪明的销售(计数+贪心)

發布時間:2024/7/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 天池 在线编程 聪明的销售(计数+贪心) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

銷售主管的任務是出售一系列的物品,其中每個物品都有一個編號。

由于出售具有相同編號的商品會更容易,所以銷售主管決定刪除一些物品。

現在她知道她最多能刪除多少物品,她想知道最終袋子里最少可以包含多少種不同編號的物品。

例如,最開始她有n = 6 個物品,編號為:ids = [1,1,1,2,2,3],她最多可以刪除 m = 2 個物品。

如果刪除兩個物品 1,則剩下的物品 ids = [1,2,2,3],此時她擁有三種不同編號的物品。

如果刪除兩個物品 2,則剩下的物品 ids = [1,1,1,3],此時她擁有兩種不同編號的物品。

如果刪除物品 2 和物品 3 各 1個,則剩下的物品 ids = [1,1,1,2],此時她擁有兩種不同編號的物品。

我們發現,物品最少可以剩下兩種不同的編號,所以你的程序要返回 2

ids 的大小不超過 10^5 1 <= ids[i] <= 1000000 1 <= m <= 100000樣例 1 輸入: [1,1,1,2,2,3] 2 輸出: 2

https://tianchi.aliyun.com/oj/245809026182441523/267721733825565365

2. 解題

  • 個數少的物品先拿走,減少的種類多
class Solution { public:/*** @param ids: ID number of items* @param m: The largest number of items that can be remove* @return: the result of the min item*/int minItem(vector<int> &ids, int m) {// write your code hereunordered_map<int,int> goods_count;for(auto i : ids)goods_count[i]++;vector<int> count;for(auto &gc : goods_count)count.push_back(gc.second);sort(count.begin(), count.end());int kinds = count.size(), i = 0;while(i < kinds && m > 0){int take = min(m, count[i]);m -= take;count[i] -= take;if(count[i] == 0)i++;}return kinds-i;} };

50ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的天池 在线编程 聪明的销售(计数+贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。