網站首頁 編程語言 正文
題目描述
給你一個數組,將數組中的元素向右輪轉 k 個位置,其中 k 是非負數。OJ鏈接
實例
1.實例1
輸入: nums = [1,2,3,4,5,6,7], k = 3
輸出: [5,6,7,1,2,3,4]
解釋:
向右輪轉 1 步: [7,1,2,3,4,5,6]
向右輪轉 2 步: [6,7,1,2,3,4,5]
向右輪轉 3 步: [5,6,7,1,2,3,4]
2.實例2
輸入:nums = [-1,-100,3,99], k = 2
輸出:[3,99,-1,-100]
解釋:?
向右輪轉 1 步: [99,-1,-100,3]
向右輪轉 2 步: [3,99,-1,-100]
解題思路
為了使算法空間復雜度為O(1),原地旋轉,所以不能額外創建數組。
以實例1為例子。使用三次逆轉法,讓數組旋轉k次
- 先整體逆轉 變為
(7,6,5,4,3,2,1)
- 逆轉子數組[0, k - 1] 變為
(5,6,7,4,3,2,1)
- 逆轉子數組[k, numsSize - 1] 變為
(5,6,7,1,2,3,4)
1. 先整體逆轉
設置兩個指針變量分別指向頭部和尾部。當 begin 此處不贅述、同上面兩個步驟的思路。這樣就完成了對數組的輪轉。 假如需要輪轉的個數k大于數組numsSize的長度呢? 假如k為10,那么本題的結果是什么呢? 假如右旋10個數,那么先旋7個后將又回到了原來的樣子。 然后再旋3個的話那么將和本題的旋3個一模一樣。 此代碼帶主函數。LeetCode題目中是接口類型的不帶主函數。因為要輪轉三次。所以把while循環寫成一個函數,方便復用。2.逆轉子數組[0, k - 1]
3.逆轉子數組[k, numsSize - 1]
易錯點
if (k > numsSize)
{
k %= numsSize;
}
代碼
LeetCode189. 輪轉數組
#include
原文鏈接:https://blog.csdn.net/qq2466200050/article/details/123481769
相關推薦
- 2022-08-02 Python面試之os.system()和os.popen()的區別詳析_python
- 2022-05-25 Properties的遍歷幾種方式
- 2022-07-01 Python直接使用plot()函數畫圖的方法實例_python
- 2022-07-21 OSPF的路由策略和流量抓取
- 2022-04-04 Python?Opencv實現圖片切割處理_python
- 2022-05-13 FAILED: Execution Error, return code 1 from org.ap
- 2022-05-27 Python?nonlocal關鍵字?與?global?關鍵字解析_python
- 2023-01-17 MATLAB算法技巧和實現斐波那契數列的解決思路_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支