zoukankan      html  css  js  c++  java
  • 【leetcode】1560. Most Visited Sector in a Circular Track

    题目如下:

    Given an integer n and an integer array rounds. We have a circular track which consists of n sectors labeled from 1 to n. A marathon will be held on this track, the marathon consists of m rounds. The ith round starts at sector rounds[i - 1] and ends at sector rounds[i]. For example, round 1 starts at sector rounds[0] and ends at sector rounds[1]

    Return an array of the most visited sectors sorted in ascending order.

    Notice that you circulate the track in ascending order of sector numbers in the counter-clockwise direction (See the first example).

    Example 1:

    Input: n = 4, rounds = [1,3,1,2]
    Output: [1,2]
    Explanation: The marathon starts at sector 1. The order of the visited sectors is as follows:
    1 --> 2 --> 3 (end of round 1) --> 4 --> 1 (end of round 2) --> 2 (end of round 3 and the marathon)
    We can see that both sectors 1 and 2 are visited twice and they are the most visited sectors. Sectors 3 and 4 are visited only once.

    Example 2:

    Input: n = 2, rounds = [2,1,2,1,2,1,2,1,2]
    Output: [2]
    

    Example 3:

    Input: n = 7, rounds = [1,3,5,7]
    Output: [1,2,3,4,5,6,7]

    Constraints:

    • 2 <= n <= 100
    • 1 <= m <= 100
    • rounds.length == m + 1
    • 1 <= rounds[i] <= n
    • rounds[i] != rounds[i + 1] for 0 <= i < m

    解题思路:笨方法,把每个sector经过的次数算出来取最大值即可。

    代码如下:

    class Solution(object):
        def mostVisited(self, n, rounds):
            """
            :type n: int
            :type rounds: List[int]
            :rtype: List[int]
            """
            count = [0] * (n+1)
            for i in range(len(rounds)-1):
                start,end = rounds[i],rounds[i+1]
                if end > start:
                    for inx in range(start,end):
                        count[inx] += 1
                else:
                    for inx in range(start,n+1):
                        count[inx] += 1
                    for inx in range(1,end):
                        count[inx] += 1
            count[rounds[-1]] += 1
    
            max_val = max(count)
            res = []
            for i,v in enumerate(count):
                if v == max_val:
                    res.append(i)
    
            return res
  • 相关阅读:
    mybatis框架快速入门
    perl FileHandle 模块使用
    perl substr
    Browse Code Answers
    无题
    dlang 泛型
    dlang 读取gz压缩文件
    R包 tidyverse 分列
    推荐一个网站:用各种语言去做同一件事
    dlang ref的作用
  • 原文地址:https://www.cnblogs.com/seyjs/p/13667834.html
Copyright © 2011-2022 走看看