马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
借助辅助数组
- 借助一个辅助数组tmp保存后面k个元素
- 然后逆序循环,使用数组前面n-k个元素覆盖最后到后面
- 最后把前k个元素从tmp中拿回来
复制代码- public void rotate(int[] nums, int k) {
- int len = nums.length;
- k = k % len;
- int[] Ra = new int[len];
- int cnt = 0;
- for (int i = len-k ; i < len; i++) {
- Ra[cnt++] = nums[i];
- }
- for (int i = len-1; i >=0 ; i--) {
- if(i>=k){
- nums[i] = nums[i-k];
- }else{
- nums[i] = Ra[i];
- }
- }
- }
复制代码 借助数组旋转
先团体旋转
然后0~k-1旋转
最后k-n-1旋转,即可得到目标数组
- public void rotate2(int[] nums, int k) {
- int len = nums.length;
- k = k % len;
- reverse(nums, 0, len-1);
- reverse(nums, 0, k-1);
- reverse(nums, k, len-1);
- }
- public void reverse(int[] nums, int start, int end) {
- while (start < end) {
- int temp = nums[start];
- nums[start] = nums[end];
- nums[end] = temp;
- start++;
- end--;
- }
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |