「数组左旋java」旋转数组的最小数字 java
本篇文章给大家谈谈数组左旋java,以及旋转数组的最小数字 java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java怎样把数组的元素向左移动?比如把一个数组arr{12 34 45 56 67 78 }移动2次变得45 56 67 78 12 34
- 2、JAVA数组移位
- 3、将一个二维数组旋转90度 用Java编写代码
- 4、java俄罗斯方块旋转算法,求解
Java怎样把数组的元素向左移动?比如把一个数组arr{12 34 45 56 67 78 }移动2次变得45 56 67 78 12 34
当然实现的方法是比较多的,这里给出一种:
//arr循环左移times次
function shiftArr(arr, times){
times = times%(arr.length);//考虑times大于等于length的情况
return arr.slice(times).concat(arr.slice(0, times));
//取出两个子数组然后连接
}
其他的思路有删除arr前若干个元素并添加到其末尾等(参考Array对象的方法)。
如有问题欢迎继续交流!
JAVA数组移位
我看不懂,你到底是在平移数组元素还是把指定下标的元素变成默认值?第五个元素原来是4你怎么把它变成0了?
下标越界是肯定的。数组一旦被定义,长度就是不变的。与其说是平移,你这个其实是插入操作,在指定的下标插入默认值。一旦插入新元素,数组的元素个数会变长,但这是不允许的,所以肯定会有下标越界异常。
如果你真的是要插入一个默认元素的话你无法在原来的数组上进行操作,只能声明一个新的数组,长度比原来数组长1,然后把旧的元素复制到新的数组,插入默认值,然后再把array的引用指向新数组。可以这样:
int[] array={0,1,2,3,4,5,6,7,8,9};
int[] temp=new int[array.length+1]; //
int k; //k为指定下标,假设已知
for(int i=0;ik;i++)
temp[i]=array[i]; //复制下标前的元素
temp[k]=0; //设置默认值
for(int i=k;iarray.length;i++)
temp[i+1]=array[i]; //复制下标后的元素
array=temp; //改变数组引用
将一个二维数组旋转90度 用Java编写代码
#includestdio.h
#define N 4
int a[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
void prt()
{int i,j;
for(i=0;iN;i++)
{
for(j=0;jN;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
int main()
{int i,j,k,t;
printf("原来的数组:\n");
prt();
for(i=0;i=N/2;i++)
for(j=i;jN-i-1;j++)
{
t=a[i][j];
a[i][j]=a[j][N-1-i];
a[j][N-1-i]=a[N-1-i][N-1-j];
a[N-1-i][N-1-j]=a[N-1-j][i];
a[N-1-j][i]=t;
}
printf("\n顺时针旋转90度后的数组:\n");
prt();
getch();
return 0;
}
java俄罗斯方块旋转算法,求解
可以给每一个小方块设置为一个坐标,变为一个三阶行列式,3*3矩阵,转变为二元数组旋转。观察一下左旋:
11 12 13 31 21 11
21 22 23 →→ 32 22 12
31 32 33 33 23 13
坐标变换如下:(1,1)变为(1,3),(1,2)变为(2,3),(1,3)变为(3,3)
(2,1)变为(1,2),(2,2)变为(2,2),(2,3)变为(3,2)
(3,1)变为(1,1),(3,2)变为(2,1),(3,3)变为(3,1)
规律就是(i,j)变为(j,3-i+1):
如果是2*2的方格,就可以变为二阶行列式,也就是2*2的二元数组,这里给出3*3九宫格改变的示意,我的代码如下:
import java.util.Random;
public class T{
public static void main(String[] args){
int[][] a=new int[3][3];
System.out.println("now begin to form a new integer array");
Random r=new Random();
for(int i=0;i3;i++){
for(int j=0;j3;j++){
a[i][j]=r.nextInt(10);
}
}
System.out.println("the array is shown as follows:");
for(int i=0;i3;i++){
for(int j=0;j3;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}
System.out.println("左转九十度");
for(int i=0;ia.length;i++){
for(int j=0;ja[i].length;j++){
System.out.print(a[a[i].length-1-j][i]+" ");
}
System.out.println();
}
}
}
关于数组左旋java和旋转数组的最小数字 java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。