每日java5-19

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();

}

}

}

  1. 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组 [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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值