- 博客(49)
- 资源 (1)
- 收藏
- 关注
原创 哈希表优化求解两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。暴力穷举的时间复杂度为O(N^2),利用哈希表可以将时间复杂度降到O(N)。上述代码过于冗余,不够简洁。
2022-12-02 14:21:35
198
1
原创 设计模式—单例模式
*单例模式(Singleton Pattern)**是 java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。
2022-09-21 17:27:20
189
原创 闹钟定时小练习
乐乐比较懒惰,他现在想睡觉,然后再去学习。他知道现在的时刻,以及自己要睡的时长,想设定一个闹钟叫他起床学习,但是他太笨了,不知道应该把闹钟设定在哪个时刻,请你帮助他。(只考虑时和分,不考虑日期)......
2022-08-03 19:18:08
176
原创 不使用第三变量完成 int 数值交换
输入两个正整数a和b,输出这两个正整数的和,差,积,商,模(若a>b则输出a-b,a/b,a%b的值反之输出b-a,b/a,b%a的值,不考虑小数,请使用int类型)它们的和,差,积,商,模。每个值之间用空格隔开。5 的二进制为: 0 1 0 1。10的二进制为: 1 0 1 0。
2022-07-15 17:31:49
157
原创 错误: 找不到或无法加载主类 Snake.GameWin
问题截图尝试方法方法1:idea本身缓存问题,要清理缓存并重启IDEA。具体方法:file–>invalidate Cache/restart,在弹出框点击invalidate and restart,IDEA重启后问题就可以解决。上面这个方法我尝试了一下,并未解决我的问题然后在控制台检查了一下jdk的配置环境,并没有问题再次重启后,可以运行了,,我也有点蒙。...
2021-11-27 19:10:31
515
原创 七大设计原则---开闭原则
开闭原则 (Open-closed principle,缩写:OCP)对扩展开放,对修改关闭优点:使程序的扩展性好,易于维护和升级。要求需要使用接口和抽象类。 因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类来扩展就可以了。代码解释简单案例:孙悟空的皮肤更换创建一个抽象类(AbstractSkin)这里写的是一个皮肤抽象类,不只是适用孙悟空的皮肤
2021-11-24 11:36:09
205
原创 用一个栈实现另一个栈的排序
题目一个栈中元素的类型为整型,现在想将该站从栈顶到底从大到小的顺序排序,只允许申请一个栈。除此之外,可以申请新的变量,但不能申请额外的数据结构。如何完成排序?分析原本有一个栈(stack),里面存有无序的整型数据,现在只允许申请一个一个栈(help),实现将 stack 栈中的数据排序方法stack 栈弹出栈顶元素,记做 cur想要将 stack 中的元素按照从大到小排列,则将辅助栈(help)中元素按照从小到大排序,然后将 help 中元素依次压入 stack 栈中如果 cur 小于或
2020-09-17 21:01:21
143
原创 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)
题目:编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek);需要满足的条件:如果 stackPush 要往 stackPop 中压入数据,那么必须一次性把 stackPush 中的数据全部压入如果 stackPop 不为空,stackPush 绝对不能向 stackPop 中压入数据Queue方法:boolean add(E e):添加一个元素到队尾boolean offer():添加一个元素到队尾E remove():获取对手的元素,并从队
2020-09-11 23:13:27
361
原创 八皇后问题(Queen8)思路分析+源码
问题描述在8*8的国际象棋上摆放八个皇后,使其不能相互攻击,即:任意两个皇后都不能处于同一行、同一列或者同一斜线上,问有多少种摆法?(92种)思路分析第一个皇后先放在第一行的第一列第二个皇后放在第二行的第一列,判断是否合适,若不合适放在第二列、第三列···直到找到一个合适位置继续放置第三个皇后,和步骤2相同。直到第八个皇后放置在一个不冲突的位置。此时找到了一个正解当得到一个正解时,在栈回退到上一个栈时,就开始回溯,即将第一个皇后放置在第一列的所有正解全部得到然后回头,继续将第一个皇后放在
2020-09-07 21:51:07
1518
原创 完全二叉树的详解、判断方法
完全二叉树定义:对于一棵具有 n 个结点二叉树按层序编号,如果编号为 i (1≤i≤n)的结点与同样深度的满二叉树中编号为 i 的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树。判断完全二叉树的方法:看树的结构示意图,按照满二叉树的结构逐层顺序编号,如果出现了空挡,就说明不是完全二叉树,否则就是。下面这些都不是完全二叉树:这些二叉树,按层序编号中间出现了空挡,所以不是完全二叉树这个是完全二叉树:二叉树的特点:叶子结点只能出现在最下两层最下层的叶子一定集中在左部连续位
2020-09-06 23:22:42
2454
原创 简单选择排序( Simple Select Sort )图解、思路、源码
简单选择排序( Simple Select Sort )排序的分类基本思想:每一趟在 n-i+1( i=1,2,···,n-1 )个记录总选择关键字最小的记录作为有序序列的第 i 个记录图解思路:两个 for 循环嵌套,2. 外循环从头到尾递加,i 就是剩下记录中最小记录的位置3. 内循环从 i+1 到尾递加,与 i 进行比较,选出最小的记录4. 选择出最小的记录赋值给 arr[ i ]优点:先比较,后交换,减少交换次数时间复杂度:O(n^2)代码pub
2020-09-06 16:28:40
456
原创 快速排序( Quick Sort )图解、思路、源码
快速排序( Quick Sort )交换类排序,是对冒泡排序的升级基本思想:通过一趟排序将待排记录分割正独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录继续进行排序,以达到整个序列有序的目的。图解思路1.定义四个方法主方法递归方法排序方法交换方法2.递归排序低子表和高子表3.枢轴 pivot 的选择代码import java.util.Arrays;public class Quick_Sort { public s
2020-09-06 16:20:17
340
原创 冒泡排序(bubble sort)图解、思路、源码
冒泡排序( bubble sort )基本思想:两两比较相邻记录的关键字,如果逆序则交换,直到没有逆序记录为止图解核心代码:(交换位置)temp = arr[ j-1 ];arr[ j-1 ] = arr[ j ];arr[ j ] = temp;思路:两个 for 循环嵌套,2. 外循环从头循环,递加到尾,进行比较3. 内循环从尾循环,递减到 i ,进行交换位置代码优化:外循环执行一次,若没有发生交换,则说明已有序,在内循环立一个 flag ,如果内循环的 i
2020-09-06 12:27:39
305
原创 break label和continue label的区别
break 和 continue 的区别1. break 语句提供了一种方便的跳出循环的方法,一般只退出一重循环。2. 嵌套多个循环时,用 label 标记想要跳回循环的位置,continue label 跳回continue 代码示例label: for (int i = 1; i <= 4; i++) { for (int j = 1; j <= 10; j++) { if (j % 4 == 0) { continue la
2020-08-21 21:48:24
548
原创 哈希表(散列表)
概念散列技术是在记录的存储位置和它的关键字之间建立的一个确定的对应关系 f ,使得每一个关键字 key 对应一个存储位置 f( key ).对应关系 f 称为散列函数,又称哈希(Hash)函数。采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间中,这块连续存储空间称为散列表或哈希表(HashTable)。关键字对应的记录存储位置我们称为散列地址。冲突两个关键字 key1 ≠ key2,但是 f(key1) = f(key2),这种现象称为冲突,并把key1 和 key2 称为这个散
2020-08-09 23:26:46
110
原创 有一个公司,当有新的员工来报道时,要求将该员工的信息加入( id,姓名),当输入该员工的 id 时,要求查找到该员工的所有信息 要求:不使用数据库,尽量节省内存,速度越快越好哈希表(散列)
题目看一个实际需求,google公司的一个上机题:有一个公司,当有新的员工来报道时,要求将该员工的信息加入( id,姓名…),当输入该员工的 id 时,要求查找到该员工的所有信息要求:不使用数据库,尽量节省内存,速度越快越好哈希表(散列)图解分析思路分析:需要定义四个类1、测试类2、链表类3、雇员类4、哈希表类测试类1、调用哈希表类(HashTable)创建一个对象,并初始化 HashTable 的长度2、写一个简单的菜单3、添加雇员时,因为重写了构造器所以要传入 id 和
2020-08-09 21:27:09
668
原创 return的两个作用
return有两个作用:1.作为返回值,返回一个类型的值2.结束方法的运行有时候结束方法时会出错://数组模拟栈,出栈代码public int pop() { if (isEmpty()) { //System.out.println("栈空,不可出栈"); //return; //用上面两行代码报错,因为该方法有返回值,不能只写 return;需要用下面的代码替换 throw new RuntimeE
2020-08-08 17:51:27
465
原创 还用JDBC时,出现java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver错误时的解决方案
今天用 IDEA 重新开了一个 Modul 练练 JDBC 连接的代码,报了一个错误:java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver刚开始上网查了一下说是 driverClass=com.mysql.cj.jdbc.Driver 中,将 cj 去掉,改了以后还是不行。后来考虑是不是因为换了一个 Module 所以,需要重新导包,重新导包后问题完美解决。...
2020-08-01 16:42:28
226
原创 加载器ClassLoader
写作背景JDBC,在连接数据库时,遇到了一个方法,不是很理解,就在网上找了一下,但是,基本上都是很晦涩,没有一看就懂的那种感觉,所以就写了这篇文章,希望对你有用。两个方法:ClassLoader.getSystemClassLoader().getResourceAsStream(name:);ClassLoader.getSystemResourceAsStream(name:);这两个调用文件的方法,刚开始没有分清楚,以为是相同的意义,在查看了ClassLoader的API以后,发现了其中
2020-08-01 16:10:04
128
原创 数据库事务
1.什么是事务:访问并可能更新数据库中各种数据项的一个程序执行单元(unit)一组逻辑操作单元,使数据从一种状态变换到另一种状态。一组逻辑操作单元:一个或多个DML操作。2.事务的四大特性:原子性事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做一致性事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数
2020-07-25 10:52:06
184
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人