leetcode189旋转数组解决——局部旋转 (C/C++/python)
给定一个整数数组 nums
,将数组中的元素向右轮转 k
个位置,其中 k
是非负数。
示例 1:
[5,6,7,1,2,3,4]
[7,1,2,3,4,5,6]
[6,7,1,2,3,4,5]
[5,6,7,1,2,3,4]
Solution:
局部旋转 时间复杂度O(n),空间复杂度O(1)
原数组
class Solution { public: void reverse(vector<int>& nums,int start,int end) { while(start<end) { swap(nums.at(start),nums.at(end)); start++; end--; } } void rotate(vector<int>& nums, int k) { k%=nums.size();//注意k<=sizeofnum//旋转k+n*size等同于旋转k reverse(nums,0,nums.size()-1); reverse(nums,0,k-1); reverse(nums,k,nums.size()-1); } };
python:
class Solution: def rotate(self, nums: List[int], k: int) -> None: """ Do not return anything, modify nums in-place instead. """ k=k%len(nums) nums[:]=nums[-k:len(nums):1]+nums[0:-k:1]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了