# [競程] Jolly Jumpers ###### tags: `競程` ## 問題 * ZeroJudge: [d097](https://zerojudge.tw/ShowProblem?problemid=d097) 給定一個總共有 $n$ 個整數的序列,如果在這個序列中,每相鄰兩個數的差的絕對值剛好是 $1$ 到 $n - 1$(順序不拘),則我們稱這個序列為 jolly jumper。 設計一個function,輸入為這個序列,回傳這個序列是不是jolly jumper。 ## 範例 * 範例 1 ```python 輸入:[1, 4, 2, 3] 輸出:True ``` 1 和 4 相差 3,4 和 2 相差 2,2 和 3 相差 1,恰好是 1 到 3。 * 範例 2 ```python 輸入:[1, 4, 2, -1, 6] 輸出:False ``` ## 思路 我們需要使用迴圈一個一個檢查相鄰兩個數的相差值,如果這個值已經出現過,或者不在 $1$ 到 $n-1$ 的範圍內,那就立刻終止迴圈,回傳`False`。最後,如果每次檢查都通過,直到迴圈結束,那就回傳`True`。 ## 解答 :::spoiler Python 解答 ```python= def is_jolly(seq): n = len(seq) record = set([]) for i in range(1, n): delta = abs(seq[i] - seq[i - 1]) if (delta >= n) or (delta < 1) or (delta in record): return False record.add(delta) return True ``` :::
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up