LeetCodeDay04----旋转数组

题目:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

示例 1:输入:[1,2,3,4,5,6,7] 和 k = 3。输出: [5,6,7,1,2,3,4]

示例 2:输入: [-1,-100,3,99] 和 k = 2。输出: [3,99,-1,-100]

思路:

        方法一:新建一个数组,先将后面位置的元素依次放入,然后再将剩下的依次放入。再把这个放好位置的数组元素拷贝到原数组中。

        方法二:保证空间复杂度为 O(1) 的原地算法。此时应该是原地移位,首先设置一个变量,将后面的需要动的第一个元素赋值给它,同时将前面每一个元素依次后移一位,再将变量里的值赋给数组的首元素。然后再循环执行上述过程。

源码:GitHub源码

        方法一:这一方法最主要的就是弄懂“a[(i + k) % nums.length] = nums[i];”这一步。

        方法二:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容