解题思路:
使用队列实现滑动窗口
public int[] rotate(int []nums,int k){ LinkedList<Integer> queue = new LinkedList<Integer>(); for (int num:nums){ queue.offer(num); } for (int i=0;i<k;i++){ int temp = queue.pollLast(); queue.offerFirst(temp); } return queue.stream().mapToInt(value -> { return value; }).toArray(); }
优化算法: 利用空间换取时间:复制一份相同维度的数组,对于原来的数组进行位置替换
class Solution { public void rotate(int []nums,int k){ int []nums1= Arrays.copyOfRange(nums,0,nums.length); for (int i =0;i<nums1.length;i++){ int end = (i+k)%nums.length; nums[end] = nums1[i]; } } }