【最多颜色的车辆】
題目描述
【最多顏色的車輛】
題目描述
在一個狹小的路口,每秒只能通過一輛車,假好車輛的顏色只有 3 種,找出 N 秒內經過的最多顏色的車輛數量。
三種顏色編號為0 ,1 ,2
輸入描述
第一行輸入的是通過的車輛顏色信息
[0,1,1,2] 代表4 秒鐘通過的車輛顏色分別是 0 , 1 , 1 , 2
第二行輸入的是統計時間窗,整型,單位為秒
輸出描述
輸出指定時間窗內經過的最多顏色的車輛數量。
示例1? ?輸入輸出示例僅供調試,后臺判斷數據一般不包含示例
輸入
0 1 2 1
3
輸出
2
樣例解釋
在 3 秒時間窗內,每個顏色最多出現 2 次。例如:[1,2,1]
示例1???輸入輸出示例僅供調試,后臺判斷數據一般不包含示例
輸入
0 1 2 1
2
輸出
1
樣例解釋
在 2 秒時間窗內,每個顏色最多出現1 次。
解題:滑動窗口的應用
代碼一:
s = list(map(int,input().split()))#0 1 2 1 r = int(input()) l = 0 d = {0:0,1:0,2:0} while r <= len(s):d[0] = max(d[0],s[l:r].count(0))d[1] = max(d[1],s[l:r].count(1))d[2] = max(d[2],s[l:r].count(2))l += 1r += 1ret = sorted(d.values(),key=lambda x:x,reverse=True) print(ret[0])代碼二:
# 輸入獲取 arr = input().split() n = int(input())# 算法入口 def getResult(arr, n):count = {"0": 0,"1": 0,"2": 0}l = 0r = l + nfor c in arr[l:r]:count[c] += 1maxV = max(count.values())while r < len(arr):add = arr[r]remove = arr[l]r += 1l += 1count[add] += 1count[remove] -= 1maxV = max(maxV, count[add])return maxV# 算法調用 print(getResult(arr, n))總結
- 上一篇: 关于setTimeout的一道经典面试题
- 下一篇: aswing