1969. 品种邻近

摘要
Title: 1969. 品种邻近
Tag: 链表,滑动窗口
Memory Limit: 64 MB
Time Limit: 1000 ms

Powered by:NEFU AB-IN

Link

1969. 品种邻近

  • 题意

    农夫约翰的 N 头奶牛排成一排,每头奶牛都用其品种 ID 进行描述。
    如果两头相同品种的牛靠得太近,它们就会吵架。
    具体的说,如果同一品种的两头奶牛在队列中的位置相差不超过 K,我们就称这是一对拥挤的牛。
    请计算品种 ID 最大的拥挤奶牛对的品种 ID。

  • 思路

    • 类似于链表的思路,每次记录上一个比它小的index,并进行比较即可
    • 还有种双指针的做法,可以用队列进行维护
      • 维护一个长为k的队列
      • 进去的时候,如果前面有相同的,就更新答案
      • 当队列数目大于k的时候,弹出队首
  • 代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    '''
    Author: NEFU AB-IN
    Date: 2022-01-13 22:39:02
    FilePath: \ACM\Acwing\1969.py
    LastEditTime: 2022-01-13 22:58:36
    '''

    ID = [0] * 1000010
    lst = [0]


    def solve():
    n, k = map(int, input().split())
    for _ in range(n):
    x = int(input())
    lst.append(x)
    res = -1
    for i in range(1, n + 1):
    if ID[lst[i]] != 0 and abs(i - ID[lst[i]]) <= k:
    res = max(res, lst[i])
    ID[lst[i]] = i
    print(res)


    if __name__ == "__main__":
    solve()
使用搜索:谷歌必应百度