leetcode--Rotate Array
来源:互联网 发布:sql语句查询所有库存 编辑:程序博客网 时间:2024/06/09 05:07
/*
* 需求:旋转数组
* 需求:旋转数组
* Rotate an array of n elements to the right by k steps.
*/
在自己的eclipse上写的代码很通过,但是在leetcode上怎么也刷不过。编译能过,但是输出的还是原来的数组,并没有旋转。
睡了一觉,才想到是这个原因。
是因为数组与数组之间的拷贝不能直接用"="号来赋值,nums只是引用,当nums=y;的时候,nums只是指向别的对象,原来的对象内容并没有改变。所以要改用
System.arraycopy()或者是Arrays.copyof()来拷贝数组。
当然这两者还是有区别的。具体请参考API。
贴代码:
/*<span style="font-size:18px;"> * 时间复杂度和空间复杂度都是O(N) * 开辟一个新数组区域 * 倒着找到要旋转的区域,输出, * 在正着找到没有旋转的地方,输出 */ public void rotate(int[] nums, int k) { int reallyrotate=k%(nums.length);//循环,实际只旋转k%len次数 int start=nums.length-reallyrotate; int end=nums.length-1;//确定待变换区域 if(start<=end){ int[] y=new int[nums.length]; int y_cur = 0; //赋值旋转区域 for(int i=start;i<=end;i++){ y[i-nums.length+reallyrotate]=nums[i];//y[0]=num[i] y_cur=i-nums.length+reallyrotate; } System.out.println("y_cur="+y_cur); //赋值没有旋转区域 for(int j=0;j<=nums.length-reallyrotate-1;j++) { y[y_cur+1+j]=nums[j]; } System.arraycopy( y, 0, nums, 0, nums.length );//拷贝数组 System.out.println(Arrays.toString(nums)); } }</span>
0 0
- [leetcode][array] Rotate Array
- LeetCode[Array]: Rotate Image
- LeetCode:Rotate Array
- [LeetCode] Rotate Array
- *LeetCode-Rotate Array
- [LeetCode]189.Rotate Array
- Rotate Array - LeetCode - Java
- Rotate Array--Leetcode(Java)
- Leetcode--Rotate Array
- LeetCode: Rotate Array
- LeetCode Rotate Array
- Rotate Array(leetcode)
- leetcode Rotate Array
- Leetcode: Rotate Array
- [Leetcode]11 Rotate Array
- [LeetCode][189][Rotate Array]
- Leetcode:Rotate Array
- LeetCode: Rotate Array
- springMvc入门配置Validation
- RedHat/CentOS利用iso镜像做本地yum源
- BAT解密:互联网技术发展之路(1) - 技术发展的驱动力
- 使用js动态添加组件
- sqlserver.jdbc.SQLServerException: 事务(进程 ID 246)与另一个进程被死锁在 锁 资源上,并且已被选作死锁牺牲品。请重新运行该事务
- leetcode--Rotate Array
- 这个是用来看框架的本地存储。
- ViewState EnableViewState 禁用与使用心得
- ehchche配置中配置多个缓存对象
- BAT解密:互联网技术发展之路(2)- 业务如何驱动技术发展
- 动画效果
- java noi socket
- 009 Palindrome Number [Leetcode]
- 第四章 Controller接口控制器详解(6)——跟着开涛学SpringMVC