电商平台网站建设,网络营销推广的方式,免费建域名网站,网络运营师资格证前言(基本知识)
List集合
有序#xff0c;接口#xff0c;
List引用数据类型 listnew ArrayList();
方法#xff1a; add() size() get()//索引index从0开始#xff0c;返回对应的值
isEmpty()判断是否包含该元素,不包含返回true#xff0c;包含返…前言(基本知识)
List集合
有序接口
List引用数据类型 listnew ArrayList();
方法 add() size() get()//索引index从0开始返回对应的值
isEmpty()判断是否包含该元素,不包含返回true包含返回false
contains() // 是否包含指定元素 ,包含true remove()//删除并返回被删除的元素
数组集合排序
Arrays.sort() //默认升序定义数组使用引用数据类型
Collections.sort()
Set集合
不允许重复无序
方法 SetInteger setnew HashSet();
常用于判断重复元素时
add() size() contains() // 是否包含指定元素 ,包含true
remove()//删除元素,删除成功返回true
clear() //清除所有元素
Map集合
散列表key-value映射无序
方法MapInteger,Integer mapnew HashMap();
put(键,值) get(键)//对应键的值没有返回null size()
entrySet() //map集合的每个键值转换entry对象返回entry对象组成的Set集合。 for(entryInteger,Integer entry map.entrySet()){ //遍历map集合的一种方法模板通过map集合的entrySet方法将map集合转化成一个entry类型的数组 System.out.print(map.getKey() map.getValue()); } getOrDefault(键,值)//获取键对应的值找不到返回默认值
Stack集合
先进后出
方法StackInteger stacknew Stack();
pop()//删除顶部元素 peek();//查看顶部元素并返回 push()//从顶部压入
isEmpty();//判断是否为空
Queue集合
先进先出
方法QueueInteger queuenew Linkedlist();
是 boolean add();//队尾压入元素并返回是否压入成功 poll()//删除并返回被删除的元素
peek()//查看队尾元素 isEmpty()//队列是否为空 编号1389二分查找数组元素
题目描述
给定一个数组其采用如下代码定义
int data[200];
for(i 0 ; i 200 ; i data[i] 4 * i 6;先给定某个数在 data 数组中请你求出它在数组中的位置。
输入描述
输入一个待查找的整数该整数一定在数组data中。
输出描述
输出该整数在数组中的指标。
输入输出样例
示例 1 输入 262输出 64示例 2 输入 438输出 108代码
import java.util.Scanner;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代码...int []datanew int[200];for(int i0;i200;i){data[i]4*i6;}int ascan.nextInt();int c0;for(int i0;i200;i){if(adata[i]){ci;}}System.out.println(c);scan.close();}
}
编号539明明的随机数
题目描述
明明想在学校中请一些同学一起做一项问卷调查为了实验的客观性他先用计算机生成了 N 个 1 到 1000 之间的随机整数N≤100对于其中重复的数字只保留一个把其余相同的数去掉不同的数对应着不同的学生的学号。然后再把这些数从小到大排序按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
输入描述
第 1 行为 1 个正整数表示所生成的随机数的个数N。
第 2 行有 N 个用空格隔开的正整数为所产生的随机数。
输出描述
输出 2 行第 1 行为 1 个正整数 M表示不相同的随机数的个数。
第 2 行为 M 个用空格隔开的正整数为从小到大排好序的不相同的随机数。
输入输出样例
示例 1 输入 10
20 40 32 67 40 20 89 300 400 15输出 8
15 20 32 40 67 89 300 400
代码
直接使用list.contain()也能完成去重操作
package lanqiaoyun;
import java.util.*;public class jihe539 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scannew Scanner(System.in);int nscan.nextInt();int []arrnew int [n];ListInteger listnew ArrayList();for(int i0;in;i) {arr[i]scan.nextInt();//System.out.print(list);}for(int i0;in;i) {if(!list.contains(arr[i])) {list.add(arr[i]);}}Collections.sort(list);System.out.println(list.size());for(int x:list) {System.out.print(x );}}}
使用set.contain()
package lanqiaoyun;
import java.util.*;public class jihe539 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scannew Scanner(System.in);int nscan.nextInt();int []arrnew int [n];ListInteger listnew ArrayList();SetInteger setnew HashSet();for(int i0;in;i) {arr[i]scan.nextInt();//System.out.print(list);}for(int i0;in;i) {if(!set.contains(arr[i])) {set.add(arr[i]);list.add(arr[i]);}}Collections.sort(list);System.out.println(list.size());for(int x:list) {System.out.print(x );}}}编号map
问题描述
输入一个数字nn1e5然后输入一个长度为n的数组an(-1e9ai1e9),请你输出出现频率最大的数。如果由多个数频率相同按从小到大依次输出。
示例
输入 5 1 1 2 2 0
输出 1 2
代码
package lanqiaoyun;
import java.util.*;
import java.util.Map.Entry;public class teshu {public static void main(String[] args) {// TODO Auto-generated method stubScanner scannew Scanner(System.in);int nscan.nextInt();MapInteger,Integer mapnew HashMap();/*for(Entry Integer,Integer entry:map.entrySet()) {System.out.println(entry.getKey() entry.getValue());}System.out.println(max);for(Entry Integer,Integer entry:map.entrySet()) {if( map.entryValue()max) {//System.out.print(a[i] );}}*/for(int i0;in;i) {int ascan.nextInt();map.put( a, map.getOrDefault(a, 0)1);}long maxInteger.MIN_VALUE;for(EntryInteger, Integer entry:map.entrySet()) {if(entry.getValue()max) {maxentry.getValue();}}ListInteger listnew ArrayList();for(EntryInteger, Integer entry:map.entrySet()) {if(entry.getValue()max) {list.add(entry.getKey());// System.out.print(entry.getKey() );}}Collections.sort(list);for(int i:list) {System.out.print(i );}}}编码2490小蓝的字符串
问题描述
小蓝有一个长度为 n 的括号串括号串仅由字符 ( 、 ) 构成请你帮他判断一下该括号串是否合法合法请输出 Yes 反之输出 No 。
合法括号序列 空串是合法括号序列。 若 s 是合法括号序列则 ( s ) 也是合法括号序列。 若 s,t 都是合法括号序列则 st 也是合法括号序列。
例如 ()() (()) (())() 均为合法括号序列。
输入格式
第一行包含一个正整数 n 表示括号串的长度。
第二行包含一个长度为 n 的括号串。
输出格式
输出共 11 行若括号串合法请输出 Yes 反之输出 No 。
样例输入1
10
(()(()))()样例输出1
Yes样例输入2
5
()()(样例输出2
No
代码
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代码...int nscan.nextInt();char []ascan.next().toCharArray();StackCharacter stacknew Stack();int countn;for(int i0;in;i) {if(a[i]() {stack.push(a[i]);}else if(a[i])) {if(!stack.isEmpty()) {stack.pop();countcount-2; }else {//System.out.println(No);break;}}}if(stack.isEmpty()count0) {System.out.println(Yes);}else {System.out.println(No);}}}
编号1265排序
题目描述
给定一个长度为 N 的数组 A请你先从小到大输出它的每个元素再从大到小输出它的每个元素。
输入描述
第一行包含一个整数 N。
第二行包含 N 个整数a1,...,an表示数组 A 的元素。
1≤N≤5×105,−109≤ai≤109。
输出描述
输出共两行每行包含 N 个整数表示答案。
输入输出样例
示例 1 输入 5
1 3 2 6 5输出 1 2 3 5 6
6 5 3 2 1
代码 import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scannew Scanner(System.in);long nscan.nextLong();ListLong listnew ArrayList();for(long i0;in;i){list.add(scan.nextLong());}Collections.sort(list);for(long x:list) {System.out.print(x );}Collections.sort(list,new ComparatorLong(){Overridepublic int compare(Long o1, Long o2) {// TODO Auto-generated method stubreturn Long.compare(o2, o1);}});System.out.println( );for(long x:list) {System.out.print(x );}}}编号782拼数
问题描述
给定 n 个正整数a1,a2,…,an你可以将它们任意排序。
现要将这 n 个数字连接成一排即令相邻数字收尾相接组成一个数。
问这个数最大可以是多少。
输入格式
第一行输入一个正整数 n1≤n≤20。
第二行输入 n 个正整数a1,a2,…,an1≤ai≤105。
输出格式
输出一个整数表示答案。样例输入
3
13 312 343样例输出
34331213 代码
package lanqiaoyun;
import java.util.*;public class a782 {public static void main(String[] args) {// TODO Auto-generated method stubScanner scannew Scanner(System.in);int nscan.nextInt();String []strnew String[n];for(int i0;in;i) {str[i]scan.next();}Arrays.sort(str,(o1,o2)-(o2o1).compareTo(o1o2));StringBuilder stnew StringBuilder();for(String i:str) {st.append(i);}System.out.println(st);/*for(int i0;in;i) {list.add(scan.nextLong());}/** for(int x:list) {}*/}}编号2122数位排序
问题描述
小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当 两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。
例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位 之和 13 。
又如, 6 排在 2022 前面, 因为它们的数位之和相同, 而 6 小于 2022 。
给定正整数 n,m, 请问对 1 到 n 采用这种方法排序时, 排在第 m 个的元 素是多少?
输入格式
输入第一行包含一个正整数 n 。
第二行包含一个正整数 m 。
输出格式
输出一行包含一个整数, 表示答案。
样例输入
13
5样例输出
3
代码
import java.util.Scanner;
import java.util.Arrays;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代码...int n scan.nextInt();int m scan.nextInt();Integer[] array new Integer[n];for (int i 0; i n; i) {array[i] i 1;}Arrays.sort(array, (o1, o2) - digitSum(o1) ! digitSum(o2) ? digitSum(o1) - digitSum(o2) : o1 - o2);System.out.println(array[m - 1]);scan.close();}private static int digitSum(Integer num) {int ans 0;while (num 0) {ans num % 10;num / 10;}return ans;}
}
残缺品通过率有问题
import java.util.*;
// 1:无需package
// 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代码...long nscan.nextLong();long mscan.nextLong();ListLong listnew ArrayList();for(long i0;in;i) {list.add(i1);}Collections.sort(list,new ComparatorLong() {Overridepublic int compare(Long o1, Long o2) {// TODO Auto-generated method stubint c(int) (o2-o1);if(su(o1)su(o2)) {c(int) (o1-o2);}else if(su(o1)su(o2)) {if(o1o2) {c(int) (o1-o2);}}return c;}public long su(long x) {long sum0;while(x!0) {sumsumx%10;xx/10;}return sum;}});/*for(long x:list) {System.out.print(x );}*/System.out.println(list.get((int) m-1));}}