91.求单链表的倒数第n个元素的值。
public static in getbackward(ListNode head,int n) {
ListNode
p1=head;
ListNode
p2=head;
for(int i=0;i<n-1;i++) {
p2=p2.next;
}
while(p2.next!=null) {
p1=p1.next;
p2=p2.next;
}
return p1.data;
}
92.给定一个数组,将数组中的元素向右移动K个位置,其中K是非负数,输出旋转后的数组。
public class fanzhuan {
public static void main(String[] args) {
int [] arr= {1,2,3,4,5,6,7};
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]);
}
System.out.println();
int k=3;
int [] arry=arrymove(arr,k);
for(int i=0;i<arry.length;i++) {
System.out.print(arry[i]);
}
}
public static int[] arrymove(int [] arr,int k) {
int [] temp=new int[arr.length];
System.arraycopy(arr,0,temp,0,arr.length);
k=k%arr.length;
int t;
for(int i=0;i<arr.length;i++) {
t=(i+k)%arr.length;
arr[t]=temp[i];
}
return arr;
}
}
93.给定一个有序数组,删除其中重复元素,只保留一个,返回新数组的长度。
第一种方法:新建一个数组来放最后的结果,由于不知道大小,就先与原数组大小相同,然后直接遍历原数组,第一次遍历从第一个数开始,第二个遍历从第二个数开始依次往后,如果第一个数与第二个数相等,则将预先设定的boolean类型的值更改为false并跳出循环,判断boolean类型的值是否为ture,是则将该值放入结果数组中,最后数组里面放的就都是不重复的元素,但需要注意的是我们一开始设定的大小为和原数组相同,所以没有放入的则默认都会0;所以这里还需要再新建一个数组,将得到的结果数组复制到新数组,新数组的大小可以在判断那里初始一个值来计录次数,最后的次数则为新数组的大小,
import
java.util.Scanner;
public class BL {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println(“输入数组的长度:”);
int n=sc.nextInt();
int [] a=new int[n];
System.out.println(“输入数组:”);
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
int [] f=delete(a);
int count=0;
for(int i=0;i<f.length;i++) {
System.out.print(f[i]+" ");
count++;
}
System.out.println();
System.out.println(“新数组的长度为:”+count);
}
public static int[] delete(int [] a) {
int t=0;
int [] te=new int[a.length];
for(int i=0;i<a.length;i++) {
boolean istrue=true;
for(int j=i+1;j<a.length;j++) {
if(a[i]==a[j]) {
istrue=false;
break;
}
}
if(istrue) {
te[t]=a[i];
t++;
}
}
int [] nt=new int[t];
System.arraycopy(te,0,nt,0,t);
return nt;
}
}
第二种方式:利用其contains方法进行比较,不同则add放入链表,最终结果则为无重复的链表,
import
java.util.ArrayList;
import
java.util.List;
import
java.util.Scanner;
public class dataBL {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println(“输入数组的长度:”);
int n=sc.nextInt();
int [] a=new int[n];
System.out.println(“输入数组:”);
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
List list=new ArrayList();
for(int i=0;i<a.length;i++) {
if(!list.contains(a[i])) {
list.add(a[i]);
}
}
System.out.println(“新数组长度为”+list.size());
for(int s:list) {
System.out.print(s+" ");
}
}
}
94.顺时针旋转二维数组90度
public class XuanZhuan {
public static void main(String[] args) {
int [][] a= {{1,2,3},{4,5,6},{7,8,9}};
rotate(a);
}
public static void rotate(int [][] a) {
for(int j=0;j<a[0].length;j++) {
for(int i=a.length-1;i>=0;i–) {
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
}
- 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组 [3, 32, 321],则打印出这3个数字能排成的最小数字321323。
import java.util.Arrays;
import java.util.Scanner;
public class ShuChu {
public static void main(String[] args) {
Scanner
sc=new Scanner(System.in);
System.out.println(“数组的长度:”);
int n=sc.nextInt();
int [] a=new int [n];
System.out.println(“数组:”);
for(int i=0;i<n;i++) {
a[i]=sc.nextInt();
}
String
s=printMin(a);
System.out.println(s);
}
public static String printMin(int [] a) {
if(anull||a.length0) {
return “”;
}
String[]
arr=new String[a.length];
for(int i=0;i<a.length;i++) {
arr[i]=String.valueOf(a[i]);
}
Arrays.sort(arr);
StringBuilder
sb=new StringBuilder();
for(String str:arr) {
sb.append(str);
}
return sb.toString();
}
}