碼上快樂
1秒登錄
首頁
榜單
標簽
關於
搜索
相關內容
簡體
繁體
數字循環右移 解題報告
本文轉載自
查看原文
2019-12-16 15:28
377
數字循環右移
題目如下:
一個數組a中存有n(>0)個整數,將每個整數循環向右移m(≥0)個位置,即將a中的數據由(a0 a1 ⋯an−1 )變換為(an−m ⋯an−1 a0 a1 ⋯an−m−1 )(最后m個數循環移至最前面的m個位置)。
我的思路:
題目明確告訴我們要將每個整數循環向右移動,所以這題可以嵌套循環,逐個移動,容易理解,但效率相對低一點。使用鏈表可以提高效率。解決這個問題我們需要知道用戶傳入數據的數量n以及移動的位數m。
方法一:
創建一個數組保存用戶傳入的數據,每一次循環中先將數組的最后一個數保存到臨時變量里,然后逐個右移賦值,再將臨時變量賦值給第一個數組元素,進行m個循環即可。
流程圖如下:
方法二:
使用尾插法建立一個鏈表存放用戶傳入的數據,先連后斷,先讓表尾指向表頭,再找到指定的位置斷開並把斷開后的下一個結點作為表頭
核心代碼如下:(建立鏈表部分省略)
其中m=m%n是為了減少重復循環,for循環是為了找到需要斷開的結點。
至於流程圖,咕wo咕bu咕hui咕hua。
×
免責聲明!
本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。
猜您在找
POJ解題報告
男人八題解題報告
2020.08.27考試解題報告
五校聯考解題報告
2019.10.13考試解題報告
2019.10.11考試解題報告
LeetCode: Subsets 解題報告
PTA 數組循環右移
Java數列循環右移
Lintcode: Subarray Sum 解題報告
粵ICP備18138465號
© 2018-2025 CODEPRJ.COM