轮转数组
题目描述:
Java中List是有序、可重复的单列集合,集合中的每个元素都有对应的顺序索引,我们可以通过该索引来访问指定位置上的集合元素。
思路:
首先选用list来存储中间结果。首先用k对n(数组长度)求余获取要移动的位数,逆序将要移动的数添加到list中,再把要移动的数添加完之后,将数组中剩下的数在依次添加到list中,之后再遍历list把数还给数组。
class Solution {
public void rotate(int[] nums, int k) {
int n=nums.length;.//数组长度
int m=k%n;//要移动的位数
List<Integer> List=new ArrayList<>();
for(int i=m;i>0;i--)//逆序添加要移动的数到list中
{
List.add(nums[n-i]);
}
//添加数组中剩下的数
for(int i=0;i<n-m;i++)
{
List.add(nums[i]);
}
//遍历数据到数组中
for(int i=0;i<List.size();i++)
{
nums[i]=List.get(i);
}
}
}