- 博客(16)
- 收藏
- 关注
原创 构造大顶堆
1、创建二叉树结点类2、根据数组的数字创建二叉树结点对象的集合3、补充完整各个二叉树结点的左右子树4、对集合从尾部至头部依次遍历,将该结点与左右子树进行比较和交换。
2023-11-01 15:44:32 57 1
原创 蓝桥杯编程题:谁是做了好事的“雷锋”
某校有一位学生学习雷锋做好事不留名。据同学们反应,这个“雷锋”是甲、乙、丙、丁四人中的一个。当老师问他们时,他们分别这样说。甲说:“这件好事不是我做的。乙说:“这件好事是丁做的。丙说:“这件好事是乙做的。丁说:“这件好事不是我做的。已知这四人中只有一个人说了真话,请问谁是做了好事的“雷锋”,将“雷锋”的名字显示出来。
2023-09-05 12:13:59 551 1
原创 线程同步的例子:汪汪队立大功
队长分配任务给某只狗狗之后就进入等待状态,该狗狗完成任务之后会唤醒他,他就接着分配下一个任务。public class PAW_Patrol { private static Lock lock = new ReentrantLock(); private static Condition c1 = lock.newCondition(); private static List<String> tasks = Stream.of("救火", "救溺", "导航",
2021-11-28 15:34:25 194
原创 线程同步之Condition实现多路通知
JDK从1.5版本开始提供了并发包,利用其中的Lock接口及其实现类与Condition类结合,可以选择性地唤醒某些正在等待锁的线程,即可以实现多路通知。public class School { private static Lock lock = new ReentrantLock(); //学生列表 private static List<Student> students = new ArrayList<>(); public stati
2021-11-28 15:10:55 98
原创 线程的同步机制的实现
线程的同步机制有两种实现方法:使用java.lang.Object类的wait()、notify()、notifyAll()方法。使用java.util.concurrent.locks.Condition类的await()、signal()、signalAll()方法。下面分别实现。第一种方式:public class P_C { private final static Object object = new Object(); private static int nu
2021-11-28 15:09:50 114
原创 对正整数分解质因数
对正整数分解质因数质数是指大于1,又只能被1和本身整除的自然数。由质数相乘得到但不是质数的数叫做合数。如果一个正整数不能被大于等于2且小于等于其平方根的数整除,那么可以确定这个正整数的质因数只有它本身。递归求解的代码如下: public void fjzys(int num) { int pfg = (int) Math.sqrt(num);//求平方根 if (pfg < 2) { System.out.println(num);
2020-06-10 22:07:41 317
原创 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:near type=InnoDB
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘type=InnoDB’数据库为mysql5.7,启动项目时自动建表过程中报了如题的错,配置如下:application
2020-05-17 15:56:31 109
原创 最小堆的构建
最小堆的构建最小堆是一棵完全二叉树,每个非叶子节点的值都小于其孩子节点的值。构建过程1、创建POJO类定义树节点来保存数据。class Node { private Node left; private Node right; private Integer value; public Node(Node left, Node right, Integer value) { this.left = left
2020-05-10 23:06:07 1492
原创 兑换零钱
兑换零钱题目日本的兑换零钱的机器可以用纸币兑换10日元、50日元、100日元和500日元硬币的组合,且每种硬币的数量都足够多。假设用一张纸币最多只能兑换出15枚这4种硬币,不限组合。问题求兑换1000日元纸币时会出现多少种组合?注意,不计硬币兑出的先后顺序。思路用穷举法按硬币面额从大到小,简单 @Test public void change() { i...
2020-05-03 23:50:39 214
原创 切分木头
切分木头题目如下假设要把长度为n厘米的木棒切分为1厘米长的小段,但是1根木棒只能由1人切分。当木棒被切分为3段后,可以同时由3个人分别切分木棒。求最多有m个人时,最少要切分几次。譬如n=8,m=3时,切分4次就可以了。问题求当n=100,m=5时的最少切分次数。思路n厘米长的木头,需要切n-1刀才能得到全是1厘米长的小段。把切分木头的情形分为两种,人等木头和木头等人。第一种情形的切分数...
2020-05-02 22:56:50 252
原创 翻牌
翻牌题目如下:这里有100张写着数字1~100的牌,并按顺序排列着。最开始所有牌都是背面朝上放置。某人从第2张牌开始,隔1张牌翻牌。然后第2,4,6 ···,100张牌就会变成正面朝上。接下来,另一个人从第3张牌开始,隔2张牌翻牌(原本背面朝上的,翻转成正面朝上;原本正面朝上的,翻转成背面朝上)。再接下来,又有一个人从第4张牌开始,隔3张牌翻牌。像这样,从第n张牌开始,每隔n-1张牌翻牌,直到...
2020-05-01 22:48:00 635
原创 求大于10的最小回文数
求用十进制、二进制、八进制表示都是回文数的所有数字中,大于十进制数10的最小值如果把某个数的各个数字按相反的顺序排列,得到的数和原来的数相同,则这个数就是“回文数”。譬如123454321就是一个回文数。我编写的解题代码如下首先编写一个方法判断一个数是否是回文数,适用于十进制、二进制、八进制。public boolean isHuiWen(String s){ int ...
2020-05-01 21:47:56 794
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人