简单云计算算法--20251023
简单云计算算法--2025/10/23
No.1
仓库管理员以数组 stock 形式记录商品库存表。stock[i] 表示商品 id,可能存在重复。请返回库存表中数量大于 stock.length / 2 的商品 id。
示例 1:
输入:stock = [6, 1, 3, 1, 1, 1]
输出:1
class Solution:
def inventoryManagement(self, stock: List[int]) -> int:
# author: 王贵祥
# date: 2025-10-23
# description: 仓库物品管理
from typing import List
class Solution:
def inventoryManagement(self,stock: List[int]) ->int:
# 判断仓库是否为空
if not stock:
return None
tmp = len(stock)/2
count = 0
count_dir={}
for num in stock:
count_dir[num] = count_dir.get(num,0)+1
# 如果 num 不存在:返回默认值 0
# print(count_dir)# 输出每个物品的数量,count_dir是一个字典,key是物品编号,value是物品数量
List_count_dir=list(count_dir.items())# 输出每个物品的编号,count_dir是一个字典,key是物品编号,value是物品数量
for key,value in List_count_dir:
if value >= tmp:
return key
if __name__ == '__main__':
s = Solution()
stock = [1,2,3,3,3,6,3,3,9,10]
print(s.inventoryManagement(stock))
No.2
仓库管理员以数组 stock 形式记录商品库存表,其中 stock[i] 表示对应商品库存余量。请返回库存余量最少的 cnt 个商品余量,返回 顺序不限。
示例 1:
输入:stock = [2,5,7,4], cnt = 1
输出:[2]
示例 2:
输入:stock = [0,2,3,6], cnt = 2
输出:[0,2] 或 [2,0]
class Solution:
def inventoryManagement(self,stock: List[int],cnt: int) -> List[int]:
# author: 王贵祥
# date: 2025-10-23
# description: 库存管理2
from typing import List
class Solution:
def inventoryManagement(self,stock: List[int],cnt: int) -> List[int]:
# 判断仓库是否为空
if not stock:
return None
list_count = sorted(stock) # 对仓库物品进行排序
result = list_count[:cnt] # 取出前 cnt 个物品
return result
# 测试用例
if __name__ == '__main__':
s = Solution()
stock = [1,2,3,4,5,6,3,3,9,10]
cnt = 5
print(s.inventoryManagement(stock,cnt))
No.3
困难
中位数 是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。
例如,
[2,3,4] 的中位数是 3
[2,3] 的中位数是 (2 + 3) / 2 = 2.5
设计一个支持以下两种操作的数据结构:
void addNum(int num)- 从数据流中添加一个整数到数据结构中。double findMedian()- 返回目前所有元素的中位数。
示例 1:
输入:
["MedianFinder","addNum","addNum","findMedian","addNum","findMedian"]
[[],[1],[2],[],[3],[]]
输出:[null,null,null,1.50000,null,2.00000]
示例 2:
输入:
["MedianFinder","addNum","findMedian","addNum","findMedian"]
[[],[2],[],[3],[]]
输出:[null,null,2.00000,null,2.50000]
class MedianFinder:
def __init__(self):
"""
initialize your data structure here.
"""
def addNum(self, num: int) -> None:
def findMedian(self) -> float:
# Your MedianFinder object will be instantiated and called as such:
# obj = MedianFinder()
# obj.addNum(num)
# param_2 = obj.findMedian()
# author: 王贵祥
# date: 2025-10-23
# description: 中位数
class MedianFinder:
def __init__(self):
# 创建一个列表nums用于存储数据流中的数字
self.nums = []
self.tmp = []
def addNum(self, num: int) -> None:
self.nums.append(num)
self.tmp = sorted(self.nums)
# result = sorted(self.nums) # 生成新列表,原列表不变
# result = self.nums.sort() # 原地修改 self.nums,但返回值为 None
def findMedian(self) -> float:
n = len(self.nums)
if n % 2 == 0:
return (self.tmp[n // 2] + self.tmp[n // 2 - 1]) / 2
else:
return self.tmp[n // 2]
# 测试用例
medianFinder = MedianFinder()
medianFinder.addNum(1)
medianFinder.addNum(2)
print(medianFinder.findMedian()) # 输出 1.5
medianFinder.addNum(3)
print(medianFinder.findMedian()) # 输出 2

浙公网安备 33010602011771号