2023年七月六日集训,代码解释如下:for
2023年七月六日集训,代码解释如下:for
最重点,哈希表
`import java.util.Scanner;
import java.util.;
public class Cf1300c{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Hashtable<String, Integer> hash_t = new Hashtable<>();
int n = sc.nextInt();
sc.nextLine();
/
这段代码是一个简单的哈希表应用,实现了一个功能:检查输入的字符串是否在哈希表中已经存在,如果存在,则输出该字符串的出现次数+1,如果不存在,则输出"OK"并将该字符串添加到哈希表中。
代码解释如下:
for (int i = 0; i < n; i++)
:循环n次,用来处理n个输入的字符串。String a = sc.nextLine();
:从输入中读取一行字符串,并将其赋值给变量a。if (hash_t.containsKey(a))
:判断哈希表hash_t中是否包含字符串a,即判断a是否已经出现过。- 如果a已经出现过:
a.int b = hash_t.get(a);
:从哈希表中获取字符串a对应的值,即出现次数是哪一次。
b.b++;
:将出现次数+1。
c.hash_t.put(a, b);
:将更新后的出现次数存回哈希表中。
d.System.out.println(a + b);
:输出字符串a和出现次数。 - 如果a没有出现过:
a.System.out.println("OK");
:输出"OK"。
b.hash_t.put(a, 0);
:将字符串a添加到哈希表中,并将出现次数初始化为0。
通过使用哈希表,可以高效地判断字符串是否已经出现,并记录每个字符串的出现次数。这在统计词频、记录重复项等场景中非常有用。
*/
for( int i=0; i<n; i++)
{
String a = sc.nextLine();
if( hash_t.containsKey(a)) {
int b = hash_t.get(a);
b++;
hash_t.put(a,b);
System.out.println( a+b);
}
else{
System.out.println( "OK");
hash_t.put( a, 0);
}
}
}
}
`
Math 常用函数
关于内部类,在逆序的时候,采用这种形式
Integer[] integer={123,3,4,1,123,4,1,21,2,1,2,4}; Arrays.sort(integer, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2-o1; } });
缩写形式,称之为lamb表达式
System.out.println("--------------lambda-------------------"); Arrays.sort(integer,(Integer o1, Integer o2)->{ return o2-o1; } ); System.out.println("-----------------lambal简化-------------"); Arrays.sort(integer,(o1,o2)->o2-o1); System.out.println(Arrays.toString(integer));
file:///C:/Users/chen/Documents/Tencent%20Files/lamda.html
关于简单集合
`/* public static string tostring(数组)
把数组拼接成一个字符串
public static int binarySearch(数组,查找的元素)
二分查找法查找元素(向上对齐)
public static int[]copyof(原数组,新数组长度)
拷贝数组
public static int[]copyOfRange(原数组,起始索引,结束索引)
拷贝数组(指定范围)
public static void fi11(数组,元素)
填充数组
public static void sort(数组)
按照默认方式进行数组排序
public static void sort(数组,排序规则)
按照指定的规则排序gssdhdfhgdrh*/
int arr[]={3,4,52,25,63,24,25,2,1,4};
System.out.println(Arrays.toString(arr));
System.out.println("-----------------------------------------------");
System.out.println(Arrays.binarySearch(arr,0));
System.out.println(Arrays.binarySearch(arr,6));
System.out.println(Arrays.binarySearch(arr,3));
System.out.println("------------------------------------------");
int []newArr=Arrays.copyOf(arr,20);
System.out.println(Arrays.toString(newArr));
System.out.println("------------------------------------------");
int[]newArr2=Arrays.copyOfRange(arr,5,9);//包右不包左
System.out.println(Arrays.toString(newArr2));
System.out.println("------------------------------------------------");
Arrays.fill(newArr2,100);
System.out.println(Arrays.toString(newArr2));
System.out.println("----------------------------------------------");
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
`
(n+a-1)/a*((m+a-1)/a)
是指codeforce上关于找到
这段代码的意思是,从输入中读取三个整数n,m,a,并输出一个整数,表示用尺寸为a的正方形瓷砖铺满长度为n和宽度为m的地面所需要的瓷砖的数量。
具体的计算方式是通过将n和a相除并向上取整得到需要铺设的瓷砖的行数,同时将m和a相除并向上取整得到需要铺设的瓷砖的列数,最后将两个结果相乘即可得到总数。
找到那个特殊的,只需要找到几个数中小的那个就够了
/* 鲍勃正在准备通过智商测试。在这个测试中最常见的任务是找出给定的n个数字中哪一个不同于其他的。鲍勃注意到,一个数字的均匀度通常不同于其他数字。帮助鲍勃-检查他的答案,他需要一个程序,在给定的n个数字中找到一个不同的偶数。 输入 第一行包含整数n(3≤n≤100)-任务中的数字数量。第二行包含n个空格分隔的自然数,不超过100。可以保证的是,这些数字中有一个在均匀性上不同于其他数字。 输出 在均匀性上不同于其他数的输出指数。数字按照输入顺序从1开始编号。 */ public class Cf1300A { public static void main(String[] args) { int a=0; int b=0; Scanner sc=new Scanner(System.in); int t; t=sc.nextInt(); for(int i=1 ;i<=t;i++){ if(sc.nextInt()%2!=0) b=b+i; else a=a+i; } System.out.println(Math.min(a, b)); } }
而关于递归的方法,第一步就是先找规律,再进行嵌套书写,只找其中一个的规律,简化书写
public class cpp36right { /* 有一个很有名的数学逻辑题叫做不死神兔问题,有一对兔子,从出生后第三个月起每个月都生一对兔子 ,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第十二个月的兔子对数为多少?*/ public static void main(String[] args) { /*Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int[]arr=new int[n+1]; arr[1]=1; arr[2]=1; for (int i = 3; i <=n; i++) { arr[i]=arr[i-1]+arr[i-2]; } System.out.println(arr[n]);*/ System.out.println(getsum(12)); } public static int getsum(int month){ if(month==1||month==2){ return 1; }else { return getsum(month-1)+getsum(month-2); } } }
上楼相关习题
public static int getlou(int n){ if(n==1){ return 1; } if(n==2){ return 2; } return getlou(n-1)+getlou(n-2); } }
关于女朋友的题目
`public class cpp36 {
public static void main(String[] args) {
/*
定义数组并存储一些女朋友对象,利用Arrays中的sort方法进行排序
要求1:属性有姓名、年龄、身高。
要求2:按照年龄的大小进行排序,年龄一样,按照身高排序,身高一样按照姓名的字母进行排序。
(姓名中不要有中文或特殊字符,会涉及到后面的知识)
*/
Girlfriend girlfriend1=new Girlfriend("wuyanzu",19,176);
Girlfriend girlfriend2=new Girlfriend("asd",18,20);
Girlfriend girlfriend3=new Girlfriend("qweq",18,180);
Girlfriend[]arr={girlfriend1,girlfriend2,girlfriend3};
Arrays.sort(arr, new Comparator
@Override
public int compare(Girlfriend o1, Girlfriend o2) {
double temp = o1.getAge() - o2.getAge();
temp = temp == 0 ? o1.getHeight() - o2.getHeight() : temp;
temp = temp == 0 ? o1.getName().compareTo(o2.getName()) : temp;
if(temp>0){
return 1;
}else if (temp<0){
return -1;
}else {
return 0;
}
}
});
System.out.print(Arrays.toString(arr));
}
}
class Girlfriend{
private String name;
private int age;
private double height;
public Girlfriend() {
}
public Girlfriend(String name, int age, int height) {
this.name = name;
this.age = age;
this.height = height;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
/**
* 获取
* @return height
*/
public double getHeight() {
return height;
}
/**
* 设置
* @param height
*/
public void setHeight(int height) {
this.height = height;
}
public String toString() {
return "Girlfriend{name = " + name + ", age = " + age + ", height = " + height + "}";
}
}
`
Java HashMap containsKey() 方法
Java HashMap
containsKey() 方法检查 hashMap 中是否存在指定的 key 对应的映射关系。
containsKey() 方法的语法为:
hashmap.containsKey(Object key)
注:hashmap 是 HashMap 类的一个对象。
参数说明:
- key - 键
返回值
如果 hashMap 中存在指定的 key 对应的映射关系返回 true,否则返回 false。
实例
以下实例演示了 containsKey() 方法的使用:
实例
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// 创建一个 HashMap
HashMap<Integer, String> sites = new HashMap<>();
// 往 HashMap 添加一些元素
sites.put(1, "Google");
sites.put(2, "Runoob");
sites.put(3, "Taobao");
System.out.println("sites HashMap: " + sites);
//检查 key 为 1 是否存在
if(sites.containsKey(1)) {
System.out.println("key 为 1 存在于 sites 中");
}
}
}
执行以上程序输出结果为:
sites HashMap: {1=Google, 2=Runoob, 3=Taobao}
key 为 1 存在于 sites 中
对于不存在的,我们可以执行插入操作。
实例
import java.util.HashMap;
class Main {
public static void main(String[] args) {
// 创建一个 HashMap
HashMap<Integer, String> sites = new HashMap<>();
// 往 HashMap 添加一些元素
sites.put(1, "Google");
sites.put(2, "Runoob");
sites.put(3, "Taobao");
System.out.println("sites HashMap: " + sites);
//检查 key 为 4 是否存在,不存在插入该 key/value 对
// 使用 ! 符号来对布尔结果取相反的值
if(!sites.containsKey(4)) {
sites.put(4, "Wiki");
}
System.out.println("Updated sites HashMap: " + sites);
}
}
执行以上程序输出结果为:
sites HashMap: {1=Google, 2=Runoob, 3=Taobao}
Updated sites HashMap: {1=Google, 2=Runoob, 3=Taobao, 4=Wiki}
注意:我们还可以使用 HashMap putIfAbsent() 方法执行相同的操作。
用户点评