数组 旋转数组

这篇博客介绍了如何使用两种不同的Java方法来旋转数组。解法一是通过`System.arraycopy`两次操作实现,解法二是遍历原数组并计算新位置直接赋值。这两种方法都有效地实现了数组元素向右移动k个位置的需求。
摘要由CSDN通过智能技术生成

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

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

解法一:arraycopy(原数组名称,原数组起始下标,目标数组名称,目标数组起始下标,截取长度)

public class RotateArray {
    public void rotate(int[] nums, int k) {
        int l = nums.length;
        int[] array = new int[l];
        System.arraycopy(nums,l-k%l,array,0,k%l);
        System.arraycopy(nums,0,array,k%l,l-k%l);
        System.arraycopy(array,0,nums,0,l); 
    }
}

解法二:遍历原数组,对新数组赋值

public class RotateArray {
    public void rotate(int[] nums, int k) {
        int l = nums.length;               
        int[] array = new int[l];
        for(int i=0;i<l;i++){
            array[(i+k)%l] = nums[i];
        }
        System.arraycopy(array,0,nums,0,l);
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值