将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n
下面是使用a数组本身完成:
package 数组元素k位右移; /**
* 数组向又移动k位。 0<k<n
*
* @author SeeClanUkyo 将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n
*/
public class ArrayMoveK { public static void main(String[] args) { int k = 3;
int[] a = { 1, 2, 3, 4, 5 }; arrayMoveK(a, k); } public static void arrayMoveK(int[] a, int k) { //获取长度
int l = a.length;
//获取最大下标值
int maxIndex = l - 1;
//for循环使末尾及开始更换位置
for (int i = 0; i < k; i++) {
//获取数组最大下标的数值
int last = a[maxIndex];
for (int j = 0; j < maxIndex; j++) {
//将数组中的其他元素都右移一位 , 第一次获取时,maxIndex-j为-0为maxIndex本身
a[maxIndex - j] = a[maxIndex - 1 - j];
}
//将本次最末尾的数值传递给数组开始
a[0] = last;
}
//遍历输出新的数组
for (int x : a) {
System.out.print(x + " ");
}
} }
下面是借助第二个数组:(这样的话就简单的多了)
package 数组元素k位右移; /**
* 数组向又移动k位。 0<k<n
*
* @author SeeClanUkyo 将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n
*/
public class ArrayMoveK { public static void main(String[] args) { int k = 3;
int[] a = { 1, 2, 3, 4, 5 }; arrayMoveK(a, k); } public static void arrayMoveK(int[] a, int k) { //获取长度
int l = a.length;
//获取最大下标值
int maxIndex = l - 1;
//for循环使末尾及开始更换位置
for (int i = 0; i < k; i++) {
//获取数组最大下标的数值
int last = a[maxIndex];
for (int j = 0; j < maxIndex; j++) {
//将数组中的其他元素都右移一位 , 第一次获取时,maxIndex-j为-0为maxIndex本身
a[maxIndex - j] = a[maxIndex - 1 - j];
}
//将本次最末尾的数值传递给数组开始
a[0] = last;
}
//遍历输出新的数组
for (int x : a) {
System.out.print(x + " ");
}
} }
将一组数组向右移动k位,末尾的要转置移动到数组开始,其中n为数组大小,0<k<n的更多相关文章
- 把一个数组向右循环移动k位要求时间复杂度为O(n)
今晚做了下某公司的网络笔试题,好久没刷题了,现在渣得要死,里面有道程序设计题是 把一个数组向右循环移动k位要求时间复杂度为O(n) 给的方法定义为 public void solution(int a ...
- zufeoj 1018 阶乘第k位是多少(sprintf)
题目描述 n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少 输入 第一 ...
- [LeetCode] Remove K Digits 去掉K位数字
Given a non-negative integer num represented as a string, remove k digits from the number so that th ...
- 设子数组A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1)。试设计一个合并这2个子数组为排好序的数组A[0:N-1]的算法。
设子数组A[0:k]和A[k+1:N-1]已排好序(0≤K≤N-1).试设计一个合并这2个子数组为排好序的数组A[0:N-1]的算法.要求算法在最坏情况下所用的计算时间为O(N),只用到O(1)的辅助 ...
- A + B,末k位不相同
题目描述 读入两个小于10000的正整数A和B,计算A+B.需要注意的是:如果A和B的末尾K(不超过8)位数字相同,请直接输出-1. 输入描述: 测试输入包含若干测试用例,每个测试用例占一行,格式为& ...
- BZOJ4888 [Tjoi2017]异或和 FFT或树状数组+二进制拆位
题面 戳这里 简要题解 做法一 因为所有数的和才100w,所以我们可以直接求出所有区间和. 直接把前缀和存到一个权值数组,再倒着存一遍,大力卷积一波. 这样做在bzoj目前还过不了,但是luogu开O ...
- (笔试题)删除K位数字
题目: 现有一个 n 位数,你需要删除其中的 k 位,请问如何删除才能使得剩下的数最大? 比如当数为 2319274, k=1 时,删去 2 变成 319274 后是可能的最大值. 思路: 1.贪心算 ...
- 删除一个数的K位使原数变得最小
原创 给定一个n位正整数a, 去掉其中k个数字后按原左右次序将组成一个新的正整数.对给定的a, k寻找一种方案,使得剩下的数字组成的新数最小. 提示:应用贪心算法设计求解 操作对象为n位正整数,有可能 ...
- Leetcode 402.移掉k位数字
移调k位数字 给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小. 注意: num 的长度小于 10002 且 ≥ k. num 不会包含任何前导零. 示例 1 : ...
随机推荐
- iOS中textbox文本框清除圆角
在iOS.Mac safari中,所有的textbox, select, checkbox都会被强制美化为圆角.但在特殊情况下需要清除圆角时发现iOS中使用以下传统的css无效: border-rad ...
- Spark Core(三)Executor上是如何launch task(转载)
1. 启动任务 在前面一篇博客中(Driver 启动.分配.调度Task)介绍了Driver是如何调动.启动任务的,Driver向Executor发送了LaunchTask的消息,Executor接收 ...
- Centos expect spawn、linux expect 用法
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ###### ...
- Django-made基础
知识预览 ORM 创建表(建立模型) 添加表记录 查询表记录 修改表记录 删除表记录 回到顶部 ORM 映射关系: 表名 <-------> 类名 字段 <-------> 属 ...
- 数据结构线性表的动态分配顺序存储结构算法c语言具体实现和算法时间复杂度分析
#include<stdio.h>#include<stdlib.h>//线性表的动态分配顺序存储结构#define LIST_INIT_SIZE 100//线性表存储空间的初 ...
- CUDA从入门到精通 - Augusdi的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/augusdi/article/details/12833235 CUDA从入门到精通 - Augusdi的专栏 - 博客频道 - CSDN.NET CUDA ...
- 缓存(图像 IO 14.2)
缓存 如果有很多张图片要显示,最好不要提前把所有都加载进来,而是应该当移出屏幕之后立刻销毁.通过选择性的缓存,你就可以避免来回滚动时图片重复性的加载了. 缓存其实很简单:就是存储昂贵计算后的结果(或者 ...
- Asp.net MVC 通过自定义ControllerFactory实现构造器注入
一.重写ControllerFactory的GetControllerInstance ControllerFactory是asp.net中用于在运行时构造Controller的工厂 ,默认使用的工厂 ...
- mysql B+Tree索引
原文地址:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 数据结构及算法基础 索引的本质 MySQL官方对索引的定义为:索 ...
- linux常用命令:sudo 命令
sudo命令用来以其他身份来执行命令,预设的身份为root. 1.命令格式: sudo [参数] [命令] 2.命令功能: 功能: sudo可以针对单个命令授予临时权限.用户也可以通过su切换到 ...