当前位置: 代码迷 >> 综合 >> Leetcode 1560. Most Visited Sector in a Circular Track (python)
  详细解决方案

Leetcode 1560. Most Visited Sector in a Circular Track (python)

热度:41   发布时间:2023-11-26 06:37:12.0

Leetcode 1560. Most Visited Sector in a Circular Track

  • 题目
  • 解法:brutal force
  • 解法2:

题目

在这里插入图片描述

解法:brutal force

没有仔细思考规律就是写的这么丑陋

class Solution:def mostVisited(self, n: int, rounds: List[int]) -> List[int]:d = collections.defaultdict(int)for i in range(len(rounds)-1):if rounds[i+1]>rounds[i]:for num in range(rounds[i],rounds[i+1]):d[num] += 1if rounds[i+1]<rounds[i]:for num in range(rounds[i],n+1):d[num] += 1for num in range(1,rounds[i+1]):d[num] += 1d[rounds[-1]] += 1ans = []for k,v in d.items():if not ans:ans.append(k)else:if v!=d[ans[-1]]:breakelse:ans.append(k)return sorted(ans)

解法2:

发现了规律就是这么简洁,按道理这是个easy的题目,所以肯定是有很简单的规律可循的

class Solution:def mostVisited(self, n: int, rounds: List[int]) -> List[int]:start = rounds[0]end = rounds[-1]# if start < end, all the numbers between [start,end] inclusive will appear for the most timesif start<=end:return list(range(start,end+1))# else, the numbers between (end,start) exlusive will appear for 1 less timeselse:exclude = list(range(end+1,start))return [i for i in range(1,n+1) if i not in exclude]

参考:https://leetcode.com/problems/most-visited-sector-in-a-circular-track/discuss/904710/Python-simple-range-iteration

  相关解决方案