Java刷题应用实例总结:
T1:ArrayList
ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。
例题:Acwing 791. 高精度加法
import java.util.Scanner;
import java.util.ArrayList;
public class Acwing791 {
static ArrayList<Integer> add(ArrayList<Integer> a,ArrayList<Integer> b){
int t=0;
ArrayList<Integer> c=new ArrayList<Integer>();
for(int i=0;i<a.size()||i<b.size();i++) {
if(i<a.size()) t+=a.get(i);//取出元素
if(i<b.size()) t+=b.get(i);
c.add(t%10);
t/=10;
}
if(t>0) c.add(1);
return c;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
String a,b;
a=in.next();
b=in.next();
ArrayList<Integer> va=new ArrayList<Integer>();//定义类
ArrayList<Integer> vb=new ArrayList<Integer>();
for(int i=a.length()-1;i>=0;i--) va.add(a.charAt(i)-'0');//添加元素
for(int i=b.length()-1;i>=0;i--) vb.add(b.charAt(i)-'0');
ArrayList<Integer> vc=add(va,vb);
for(int i=vc.size()-1;i>=0;i--) System.out.printf("%d",vc.get(i));
}
}
T2:HashMap
HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
HashMap 是无序的,即不会记录插入的顺序。
例题:Acwing 799 最长连续不重复子序列
import java.util.HashMap;
import java.util.Scanner;
public class Acwing799 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n;
n=in.nextInt();
int[] a=new int[n+1];
for(int i=1;i<=n;i++) {
a[i]=in.nextInt();
}
HashMap<Integer,Integer> mp=new HashMap<Integer,Integer>();//定义类
int ans=0;
for(int i=1,j=1;i<=n;i++) {
mp.put(a[i], mp.getOrDefault(a[i], 0)+1);//如果不存在则设为默认值0
while(j<=i&&mp.get(a[i])>1) {
mp.put(a[j], mp.get(a[j])-1);//插入元素
j++;
}
ans=Math.max(ans, i-j+1);
}
System.out.println(ans);
}
}
T3:排序
Collection.sort()
import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;
public class Sort {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<Integer> s=new ArrayList<Integer>();
Scanner in=new Scanner(System.in);
int n=in.nextInt();
for(int i=0;i<n;i++) {
int t=in.nextInt();
s.add(t);
}
Collections.sort(s);
for(int i:s) {
System.out.printf("%d ",i);
}
}
}
更多用法:
import java.util.HashMap;
import java.util.Scanner;
public class text {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n;
n=in.nextInt();
int[] a=new int[n];
for(int i=0;i<n;i++) a[i]=in.nextInt();
HashMap<Integer,Integer> mp=new HashMap<Integer,Integer>();
for(int t:a) {
mp.put(t, mp.getOrDefault(t, 0)+1);
}
int q;
q=in.nextInt();
while(q-->0) {
int t=in.nextInt();
if(mp.getOrDefault(t, 0)>0) {
System.out.println("Yes");
}else {
System.out.println("No");
}
}
System.out.println(mp);
}
}
T4:Pair
class pair{
public int i;
public int j;
pair(int i,int j) {
this.i=i;
this.j=j;
}
}
T5:结构体排序
import java.util.*;
class stu implements Comparable<stu>{
String name;
int time;
public stu(String name,int time){
this.name=name;
this.time=time;
}
public int compareTo(stu o) {
return time-o.time;
}
}
public class classsort {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n,k;
n=in.nextInt();
k=in.nextInt();
stu[] a=new stu[n];
for(int i=0;i<n;i++) {
String s;
int t;
s=in.next();
t=in.nextInt();
a[i]=new stu(s,t);
}
Arrays.sort(a,0,n);
System.out.print(a[k-1].name);
}
}