ETH官方钱包

前往
大廳
主題

LeetCode - 1560. Most Visited Sector in a Circular Track 解題心得

Not In My Back Yard | 2023-05-16 12:00:01 | 巴幣 100 | 人氣 135

題目連結(jié):


題目意譯:
給定一個(gè)整數(shù) n 以及一個(gè)整數(shù)陣列 rounds。代表我們有著一個(gè)環(huán)狀賽道其由編號為 1 到 n 的 n 個(gè)區(qū)域組成。一場馬拉松將在此賽道上矩形,該馬拉松由 m 輪組成。第 i 輪從第 rounds[i - 1] 區(qū)域開始,並於第 rounds[i] 區(qū)域結(jié)束。例如第 1 輪開始於 rounds[0] 並結(jié)束於 rounds[1]。

回傳一個(gè)陣列,其由最常被探訪的區(qū)域之編號組成,並以升序順序排列。

注意到,你將以區(qū)域編號之升序順序逆時(shí)針環(huán)繞著賽道(參見第一個(gè)範(fàn)例)。

限制:
2 ≦ n ≦ 100
1 ≦ m ≦ 100
rounds.length == m + 1
1 ≦ rounds[i] ≦ n
rounds[i] != rounds[i + 1] for 0 ≦ i < m



範(fàn)例測資:
範(fàn)例 1:
輸入: n = 4, rounds = [1,3,1,2]
輸出: [1,2]
解釋: 馬拉松從區(qū)域 1 開始。探訪的區(qū)域之順序?yàn)橐韵拢?/div>
1 --> 2 --> 3 (第 1 輪之結(jié)尾)--> 4 --> 1 (第 2 輪之結(jié)尾) --> 2 (第 3 輪與馬拉松之結(jié)尾)
我們可以看到區(qū)域 1 和 2 都被探訪了兩次,而它們是最常被探訪的區(qū)域。區(qū)域 3 和 4 只有被探訪一次。

範(fàn)例 2:
輸入: n = 2, rounds = [2,1,2,1,2,1,2,1,2]
輸出: [2]

範(fàn)例 3:
輸入: n = 7, rounds = [1,3,5,7]
輸出: [1,2,3,4,5,6,7]


解題思維:
直接模擬並統(tǒng)計(jì)是可行的(因?yàn)?n 和 m 都不大,所以最糟時(shí)間複雜度為 O(mn))。


不過仔細(xì)觀察可以得知,我們只需要 rounds[0](開頭區(qū)域,稱其為 X)和 rounds[m](結(jié)尾區(qū)域,稱其為 Y)便可以知道哪些區(qū)域最常被探訪。因?yàn)槲覀儽粡?qiáng)迫以逆時(shí)針順序繞著賽道,不能往回跑。

如果 X > Y,則代表區(qū)域 1 、 2 、……、Y 與區(qū)域 X 、 X + 1 、……、n 是最常被探訪的區(qū)域;而如果 X ≦ Y,則代表區(qū)域 X 、 X + 1 、……、Y 是最常被探訪的區(qū)域。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創(chuàng)作回應(yīng)

追蹤 創(chuàng)作集

作者相關(guān)創(chuàng)作

更多創(chuàng)作