ETH官方钱包

前往
大廳
主題

LeetCode - 2515. Shortest Distance to Target String in a Circular Array 解題心得

Not In My Back Yard | 2023-11-14 12:00:01 | 巴幣 0 | 人氣 88

題目連結:


題目意譯:
你被給定一個索引值從 0 開始的環形字串陣列 words,以及一字串 target。一個環形陣列代表著陣列的結尾與陣列的開頭是相連的。

更正式地說,words[i] 的下一個元素為 words[(i + 1) % n] 而 words[i] 的上一個元素為 words[(i - 1 + n) % n],其中 n 為 words 的長度。

開始於 startIndex 這個位置。你每一步可以移動到下一個字詞或上一個字詞。

回傳抵達字串 target 中的最短距離。如果字串 target 不存在於 words 中,則回傳 -1。

限制:
1 ≦ words.length ≦ 100
1 ≦ words[i].length ≦ 100
words[i] 和 target 只由小寫英文字母組成。
0 ≦ startIndex < words.length



範例測資:
範例 1:
輸入: words = ["hello","i","am","leetcode","hello"], target = "hello", startIndex = 1
輸出: 1
解釋: 我們可以根據以下方式從索引值 1 抵達 "hello":
- 往右移動 3 單位並抵達索引值 4。
- 往左移動 2 單位並抵達索引值 4。
- 往右移動 4 單位並抵達索引值 0。
- 往左移動 1 單位並抵達索引值 0。
抵達 "hello" 的最短距離為 1。

範例 2:
輸入: words = ["a","b","leetcode"], target = "leetcode", startIndex = 0
輸出: 1
解釋: 我們可以根據以下方式從索引值 1 抵達 "leetcode":
- 往右移動 2 單位並抵達索引值 3。
- 往左移動 1 單位並抵達索引值 3。
抵達 "leetcode" 的最短距離為 1。

範例 3:
輸入: words = ["i","eat","leetcode"], target = "ate", startIndex = 0
輸出: -1
解釋: 由於 "ate" 不存在於 words,我們回傳 -1。


解題思維:
掃過 words 一次並找到所有 target 字串所在的位置。假設現在有一個字串 target位於 i 這個位置,則從 startIndex 到 i 的最短距離為
min(D, n - D)
其中 D 之值為 |startIndex - i|。而所求即為 startIndex 到這些字串 target 的位置之最短距離中的最小值。




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

創作回應

追蹤 創作集

作者相關創作

更多創作