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