解题思路-LeetCode第189题:旋转数据
解题思路-LeetCode第189题:旋转数据
题目描述:
给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
示例 1:
输入: [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:
输入: [-1,-100,3,99] 和 k = 2
输出: [3,99,-1,-100]
解释:
向右旋转 1 步: [99,-1,-100,3]
向右旋转 2 步: [3,99,-1,-100]
解题思路1:
使用暴力算法,让数据中元素每次向右移动1个位置,直到右动到k个位置结束。例如k为3时:
原始数组 : 1 2 3 4 5 6 7
第一步,右移了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:
使用反转数组的方法,例如k为3时:
原始数组 : 1 2 3 4 5 6 7
第一步,反转所有数字后 : 7 6 5 4 3 2 1
第二步,反转前 k 个数字后 : 5 6 7 4 3 2 1
第三步,反转后 numsSize-k 个数字后 : 5 6 7 1 2 3 4即为结果
代码如下:
提交后,通过。