java
口口z
这个作者很懒,什么都没留下…
展开
-
线程池的理解与应用
目录 使用Executors创建线程池 在使用Executors创建不同线程池的时关键参数意义 Executors创建线程池的弊端 使用ThreadPoolExecutor创建线程池 线程池拒绝策略 如何合理配置线程池容量? 计算密集型 IO密集型 高并发下怎么选择最优线程数 动态调整 使用Executors创建线程池 这里用Executors类的静态方法创建了固定数量的线程池,也可以去创建带缓存的线程池、单一线程池 在使用Executors创建不同线程池的时关键参数.原创 2022-05-23 17:55:21 · 231 阅读 · 0 评论 -
CCF-垃圾回收站-Java
这题有必要记录一下,我抱着暴力循环的方法试一试 类point记录垃圾点坐标,循环遍历该点的上下左右是否都在其中; 若在 循环遍历四个对角线有几个在其中,则几分; 若不在,遍历下一个点 本以为双重循环会超时,竟过了。 import java.util.*; class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); ...原创 2021-07-19 13:49:03 · 116 阅读 · 0 评论 -
CCF-稀疏向量-Java
第一次用的map存储向量u的index和value,然后判断v的index是否在u种,运行后发现内存超; 第二次用两个list存储向量u的index和value,同样办法判断,结果运行超时... 我查询了资料才知道,Java的Scanner效率很低.....然后用BufferReader改进在提交即满分了 有一个要注意的点是,结果用long类型存储, class Reader { static BufferedReader reader = new BufferedReader(new I原创 2021-07-16 12:32:21 · 82 阅读 · 0 评论 -
CCF-最佳阈值-Java
思路: 用一个list存储学生的安全指数y和是否挂科r,并用安全指数排序 预测正确的个数 =<y的0个数 +>=y的1个数 数组c0存储取每个安全指数y时,<y的0个数 注意:c0[0] = 0 数组c1存储取每个安全指数y时,>=y的1个数 注意:c1[m-1] = 1 (当list.get(m-1).r==1时) c1[m-1] = 0 (否则) 在计算c0和c1其他元素时用到一维前缀...原创 2021-07-14 16:49:14 · 295 阅读 · 1 评论 -
CCF-中间数-Java
先对数组nums升序排列 暴力查找数组中比nums[i]小的数的个数,比nums[i]大的数的个数, 代码: import java.util.*; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); // n个数字 int[] nums = new int原创 2021-03-24 19:07:10 · 79 阅读 · 0 评论 -
CCF-分蛋糕-Java
每次都按序号小的蛋糕先分出去,不就是按顺序分吗。 6 9 2 6 5 6 3 5 用count变量计数得到蛋糕的朋友个数; 用一个sum变量记录分给朋友的蛋糕重量与k比较; 注意:当蛋糕已经分完了,但是sum != 0,仍需要count += 1. 代码: import java.util.*; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System原创 2021-03-23 11:36:29 · 115 阅读 · 0 评论 -
CCF-公共钥匙盒-Java
n个钥匙 k个老师 *[注意]: 不会有多个老师同时使用一个钥匙(使用钥匙的时间不会重叠) 多位老师同时还钥匙,按照钥匙编号从小到大还 1、keys列表:存储k个钥匙 2、teachers列表:存储k个老师的信息–钥匙编号w,开始时间s,使用时间c,归还时间b 把teachers列表按照s升序排列 3、waitBackKeys列表:存储待归还钥匙信息–钥匙编号w,归还时间b 把waitBackKeys列表按照b升序排列,若b相同则按照w升序排列一开始就把待归还钥匙搞清。 4、遍历teachers列表,更新借原创 2021-03-22 20:49:33 · 155 阅读 · 0 评论 -
CCF-打酱油-Java
直接代码: import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); // 小明有n元钱,是10的整数倍,不超过300 int base = n/10; System.out.println(b原创 2021-03-17 18:32:48 · 81 阅读 · 0 评论 -
CCF-游戏-java
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); // n个小朋友 int k = scan.nextInt(); // 敏感数字k int[] children = new int[n]原创 2021-03-16 09:49:50 · 74 阅读 · 0 评论 -
CCF-最小差值-java
题目简短。 求数组中两数最小差值的绝对值,很容易想到遍历数组,双重循环,时间复杂度O(n²) 代码: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.nextInt(); // n个正整数 int[] nu原创 2021-03-15 21:41:15 · 156 阅读 · 0 评论 -
CCF-碰撞的小球-java
输入: n个小球 线段长度L t s之后 输出: ts之后各小球的位置 每个小球都需要至少存两个变量:位置pos,方向state 可以用±表示右左方向,用±1表示方向,修改方向时更方便。 由题意知: 1)所有小球初始位置不同且小于L,所以所有小球的初始状态state=1; 2)不会有三个小球同时碰撞,只可能两两球的位置相同; 碰撞也就是数组中存在与某个小球position的值相同的小球。 想了好久都不知道什么数据结构存小球的两个变量合适,map?list?对象?百度后,发现可以用两个数组分别存储pos和st原创 2021-03-04 20:36:01 · 149 阅读 · 1 评论 -
CCF-跳一跳-java
规则: 1:表示跳在非中心;当前跳得分为1 2:表示跳在中心;若上一跳得分为1 或 是第一次跳则此次得分为2,否则当前跳得分为前一跳得分值加2; 0:表示未跳上;由于0只出现一次,且处于最后一个,故0情况不做考虑即可。 关键变量:当前跳得分值,前一跳得分值 代码如下: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan原创 2021-03-03 19:03:57 · 206 阅读 · 3 评论 -
CCF-画图-java
这题看了只后,是肯定要考虑多个矩形之间有交集的问题。 给定矩形:(x1,y1),(x2,y2)具体化:(1,1)(4,4) 矩形面积:(x2-x1)*(y2-y1) (4-1)X(4-1)=3X3=9; 另一种计算矩形面积的方法,也是利用坐标: x坐标从1到4:1,2,3(也可以是2,3,4) y坐标从1到4:1,2,3(也可以是2,3,4) 排列组合: 1-1,1-2,1-3; 2-1,2-2,2-3; 3-1,3-2,3-3 ===>最终9个点,即面积 利用一个二维数组,凡画的点置为1,a[i][原创 2020-10-15 16:07:29 · 138 阅读 · 0 评论 -
CCF-相邻数对-java
这题真的非常简单了。。。。 个人思路: 先排序 定义一个count=0,用于计数。若A[i+1]-A[i]=1,则count++。 直接上j代码了: import java.util.Arrays; import java.util.Scanner; public class _201409_1 { public static void main(String[] args) { // 输入 Scanner scan = new Scanner(System.in)原创 2020-10-15 15:54:16 · 118 阅读 · 0 评论 -
CCF-ISBN码-java
ISBN 码比较简单,对键盘输入的数据进行处理,然后通过9位数字计算正确的识别码与原识别码进行比对即可, 注意:识别码可能有X,所以建议识别码不要用int类型。 可能用到的类型转换方法: String转int:2+“” int转String:Integer.parseInt(“2”) int转char: 10+‘0’; char转int: ‘X’-'0’ ```java import java.util.Scanner; public class _201312_2 { public s原创 2020-10-08 16:07:25 · 166 阅读 · 0 评论 -
CCF-出现次数最多的数-java
请大家帮我看一下我的思路哪里不周全,谢谢。 错误: 我的思路: 把键盘输入的数据直接存在TreeMap(因为它按照key排序)中。定义一个maxv,只有当value>maxv的时候才输出对应的k,v,而相等和小于的情况不考虑。 代码如下: import java.util.*; public class Main{ public static void main(String[] args) { int n = new Scanner(System.in).nex原创 2020-10-02 10:57:20 · 106 阅读 · 0 评论 -
CCF-窗口-java
题目挺长,但仔细读下来,细细分析也是有一点思路的。 N个窗口,每个窗口两个坐标(x1,y1),(x2,y2)序号s M个待测点,每个点坐标(x,y) 求每个点在哪个窗口内,若在多个窗口内,则取最顶层窗口。 ** 第一个难题:键盘输入数据如何保存和处理 封装Window类: 属性:x1,y1,x2,y2,s; 方法:check(int , int )检测点是否在本窗口; 将所有的window放进一个list中。 对于待测点,不需要另存。键盘输入一个点,直接检测该点,将测的结果存起来即可。 第二个难题:原创 2020-10-08 15:50:37 · 182 阅读 · 1 评论 -
CCF-相反数-java
我的解决办法: 题目要求输入的数组不包含重复的数 1、把原数组A逐个元素求绝对值得到数组B 2、将数组B中的元素去重放入map中 3、相反数对数 = A.length - map.size() 出现问题:提交代码提示编译出错。 原因:原来我把以上三步提取出在一个单独方法findOppositeNum中,然后main()调用。 解决:去掉findOppositeNum方法,全部代码都在main中, 提交正确。 代码: ```java import java.util.HashMap; import java原创 2020-10-06 16:02:05 · 174 阅读 · 0 评论