java
易燃易爆炸i
小白
展开
-
求快乐数(算法题)
题目:编写一个算法来判断一个数是不是“快乐数”:对于一个正整数,每一次将该数替换为它各个位数上数字的平方和,然后重复这个过程直到这个数变为1,也可能是无线循环变不到1。如果变到1,那么这个数就是快乐数。分析:19 = 11+99=8282 = 88+22=6868 = 66+88=100100 = 11+00+0*0=1则19为快乐数~程序代码:public class Test{...原创 2019-03-20 16:05:21 · 1053 阅读 · 0 评论 -
数据结构--java语言实现返回链表中环的入口结点,若无环,则返回null
目录1 题目描述2 解题思路3 代码实现1 题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。2 解题思路首先我们不难想到,遍历一遍单链表,若某一结点的next指向null,则说明该单链表无环,返回null;若有环,我们定义两个引用fast和slow,让fast每次走两步,slow每次走一步,它俩肯定会在某个结点处相遇,那么问题来了,我们...原创 2019-05-22 11:30:20 · 191 阅读 · 0 评论 -
数据结构--java语言判断链表是否有环
目录1 题目描述2 解题思路3 代码实现1 题目描述给定一个链表,判断是否有环。2 解题思路定义两个引用:fast和slow,在合法的情况下,让fast一次走两步,slow一次走一步,若某次遍历时fast==slow,则说明该链表有环。3 代码实现//给定一个链表,判断是否有环 public boolean hasCycle(){ No...原创 2019-05-20 17:30:48 · 227 阅读 · 0 评论 -
java中如何查看内存泄露
1 准备工作首先你的电脑上得有软件查看内存泄露,我们使用notepad++,(记事本打开格式不对~)在此推荐一个微信公众号:软件安装管家,就可以轻松安装该软件啦~2 程序休眠、打断点(便于观察)以下程序以单链表为例:public static void main(String[] args) throws InterruptedException { M...原创 2019-05-11 12:15:07 · 3442 阅读 · 0 评论 -
数据结构--java语言实现链表的回文结构
目录1 题目描述2 解题思路3 代码实现1 题目描述对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。2 解题思路大的方向分为3步:① 找到中间结点 ② 对单链表后半部分进行反转 ③ 链表向中间推进判断值是否相等具...原创 2019-05-21 13:03:12 · 265 阅读 · 0 评论 -
数据结构--java语言实现删除链表中重复结点
目录1 题目描述2 解题思路3 代码实现1 题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->52 解题思路首先,定义一个虚拟结点node,其后保存单链表中不重复的结点,最后返回node.next...原创 2019-05-22 12:22:18 · 557 阅读 · 1 评论 -
数据结构--java语言实现循环队列
目录1 题目描述2 解题思路3 代码实现1 题目描述设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能...原创 2019-05-24 22:29:42 · 1781 阅读 · 0 评论 -
数据结构--java语言实现用两个栈实现队列
目录1 题目描述2 解题思路3 代码实现1 题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。2 解题思路我们知道:栈-先进后出,队列-先进先出,如何用两个栈实现队列呢?很简单,我们可以用一个栈1进行入栈操作,另一个栈2进行出栈操作,这时我们就要分情况了:当栈2为空时,将栈1中的元素依次出栈并且将这些元素依次入到栈2,故栈1中先...原创 2019-05-25 10:57:03 · 492 阅读 · 0 评论 -
数据结构--java语言实现最小栈
目录1 题目描述2 解题思路3 代码实现1 题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x)-- 将元素 x 推入栈中。 pop()-- 删除栈顶的元素。 top()-- 获取栈顶元素。 getMin() -- 检索栈中的最小元素。2 解题思路利用两个栈集合stack和minStack:stack栈中...原创 2019-05-25 11:39:11 · 155 阅读 · 0 评论 -
数据结构--Java语言实现有效的括号
目录1 题目描述2 解题思路3 代码实现1 题目描述给定一个只包括 '(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。2 解题思路栈:里面存放左括号,当有右括号出现时,将栈顶元素出栈,进行匹配即可。共有四种情况:...原创 2019-05-27 19:30:00 · 288 阅读 · 0 评论 -
数据结构--Java语言实现用两个队列实现栈
目录1 题目描述2 解题思路3 代码实现1 题目描述使用队列实现栈的下列操作:push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意:你只能使用队列的基本操作-- 也就是push to back, peek/pop from front, size, 和is empty...原创 2019-05-27 21:53:02 · 355 阅读 · 0 评论 -
java语言实现汽水瓶问题
目录1 问题描述2 解题思路3 代码实现4 运行结果1 问题描述有这样一道智力题:“某商店规定:三个空汽水瓶可以换一瓶汽水。小张手上有十个空汽水瓶,她最多可以换多少瓶汽水喝?”答案是5瓶,方法如下:先用9个空瓶子换3瓶汽水,喝掉3瓶满的,喝完以后4个空瓶子,用3个再换一瓶,喝掉这瓶满的,这时候剩2个空瓶子。然后你让老板先借给你一瓶汽水,喝掉这瓶满的,喝完以后用3个空瓶子换一...原创 2019-05-22 10:33:34 · 654 阅读 · 0 评论 -
数据结构--java语言实现找出两个链表的第一个公共结点
目录1 题目描述2 解题思路3 代码实现1 题目描述输入两个链表的头结点,若两个链表相交,返回交点结点,否则,返回null2 解题思路首先,我们不难想到:若两个链表相交,肯定成“倒Y”型。所以,我们可以将长度长一点的链表先走“差值”步,再次,两个链表同时走,若相交且没有走到尾结点处,返回该结点,否则,返回null3 代码实现public ListNode Fi...原创 2019-05-23 11:47:55 · 244 阅读 · 0 评论 -
数据结构--java语言实现合并两个排序的链表
目录1 题目描述2 解题思路3 代码实现1 题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。2 解题思路对于两个已经排序的链表,我们可以定义一个虚拟结点,通过比较两个链表值的大小,完成链表的拼接工作。最后返回虚拟结点的下一结点即可。3 代码实现public ListNode Merge(ListNode li...原创 2019-05-23 12:09:54 · 457 阅读 · 0 评论 -
数据结构--java语言实现将单链表以给定值x分割成两部分,并按顺序输出
目录1 题目描述2 解题思路3 代码实现4 注意事项1 题目描述编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前请返回重新排列后的链表的头指针。注意:分割以后保持原来的数据顺序不变。2 解题思路首先,我们可以定义四个结点:分别是分割后x之前的头结点和尾结点、x之后的头结点和尾结点。其次,遍历单链表,将比x值小的结点...原创 2019-05-20 16:56:43 · 775 阅读 · 0 评论 -
数据结构--java语言实现输入一个链表,输出该链表中倒数第k个结点
目录1 题目描述2 解题思路3 代码实现1 题目描述输入一个链表,输出该链表的倒数第k个结点2 解题思路按照常规的解题思路,我们可能会想到:将单链表遍历一遍,求出单链表的长度n,再从头开始遍历单链表n-k次,即得到了倒数第k个结点。但是这种方式无疑增加了很多功课,若单链表个数较多,要求输出前几个结点值,使得计算量增大了很多~我们设想:如何只遍历一遍单链表,就能找出倒数第...原创 2019-05-19 22:11:19 · 728 阅读 · 0 评论 -
java新特性--通配符
在程序类中追加了泛型之后,避免了ClassCastException的问题,同时又产生了参数统一化的问题。为了解决该问题,产生了新特性通配符,可以接受所有的泛型类型,但不能让用户随意更改。该特性从JDK1.5之后出现。有以下三种常见的通配符:1. ?使用:该通配符用于方法中,可以接收任意类型,但不能修改类型,因为参数类型不确定。 声明方式:public void fun(Massa...原创 2019-04-03 23:10:12 · 153 阅读 · 0 评论 -
java中的File文件操作类
目录1 File类的基本使用2 目录操作3 取得文件信息4 文件的相关操作作用:存在java.io包中,File类是一个唯一一个与文件本身操作(创建、删除、取得信息)有关,与文件内容无关的程序类。1 File类的基本使用File类的两种实例化方式:public File (String pathname)//直接传入绝对路径,拿到文件public File(Str...原创 2019-04-10 16:13:36 · 482 阅读 · 0 评论 -
java中的字节、字符流总结
目录1 流的分类2 字节流与字符流2.1 两者之间的区别2.2 流的操作流程2.3 字节输出流(OutputStream)2.3.1 AutoCloseable自动关闭支持-JDK1.7提供2.4 字节输入流(InputStream)2.5 字符输出流(Writer)2.6 字符输入流(Reader)2.7 转换流1 流的分类字节流(byte):In...原创 2019-04-11 17:42:04 · 207 阅读 · 0 评论 -
java--文件拷贝
直接上代码:public class Test{ public static void main(String[] args) throws Exception { String sourceFilePath = "C:\\Users\\Lenovo\\Desktop\\扣扣头像.jpg"; String destFilePath = "C:\\Use...原创 2019-04-11 17:52:58 · 128 阅读 · 0 评论 -
java--反射与类操作
目录1 反射取得父类、父接口信息2 反射调用类中构造方法3 反射调用类中普通方法4 反射调用类中普通属性5 动态设置封装1 反射取得父类、父接口信息在Class类中可以通过以下方法来取得父类、实现父接口信息:1.取得父类包名称public package getPackage();2.取得父类class对象public native Class<? s...原创 2019-04-15 19:43:33 · 97 阅读 · 0 评论 -
java--集合框架JCF总结
目录1 Collection接口1.1 List接口1.1.1 ArrayList(优先考虑)1.1.2 Vector1.1.3 LinkedList1.2 Set 接口1.2.1 HashSet - 无序存储 - 底层基于哈希表实现1.2.2 TreeSet - 有序存储 - 底层基于红黑树2 Map接口2.1 HashMap2.2 HashTable...原创 2019-04-17 09:26:07 · 201 阅读 · 0 评论 -
java--反射之取得类对象
每个类都有父类,任何一个类的class对象由JVM加载后产生,该对象在JVM中全局唯一。用户只能调用指定方法来取得该类对象,以下是三种方法:1.任何类的对象可以通过调用Object类提供的getClass()方法:"类对象.getClass()"//根据类产生对象Data data = new Data();//使用getName()方法System.out.println(data...原创 2019-04-14 11:37:05 · 120 阅读 · 0 评论 -
java--多线程常用操作方法
目录1 线程的命名与取得2 线程休眠方法3 线程让步方法4 join( )方法1 线程的命名与取得//1.通过构造方法在创建线程时设置线程名称public Thread(String name);public Thread(Runnable target,String name);//2.取得线程名称public final String getName();/...原创 2019-04-26 17:17:58 · 147 阅读 · 0 评论 -
java--生产与消费者模型
目录1 几个重要的方法1.1 wait()方法1.2 notify()方法1.3 notifyAll()方法2 单线程生产与消费者模型2.1 改进前的模型2.1 改进后的模型3 多线程生产与消费者模型3.1 有限个生产者和消费者3.2 多个生产者和消费者1 几个重要的方法1.1 wait()方法使线程停止运行,会释放对象锁。a. 该方法的三个...原创 2019-05-05 10:39:06 · 313 阅读 · 0 评论 -
java--多线程的两种同步处理
1 问题引入有三个黄牛党在卖票,我们通常会写出以下代码:class MyThread implements Runnable{ private int ticket = 100; @Override public void run() { while (ticket>0){ try { ...原创 2019-04-25 15:40:06 · 147 阅读 · 0 评论 -
java--多线程的实现
目录1 基本概念2 多线程的实现2.1 继承Thread类2.2 实现Runnable接口2.3 实现Callable接口3 Thread类与Runnable接口的关系1 基本概念进程:操作系统中一个程序的执行周期 线程:一个程序同时执行多个任务,通常来讲,每个任务就称为一个线程 进程与线程的关系:1)与进程相比,线程更加“轻量级”,创建、撤销一个线程比启动、...原创 2019-04-25 16:57:24 · 96 阅读 · 0 评论 -
写两个线程,一个线程打印1~52,另一个线程打印A~Z,打印顺序是12A34B...5152Z
目录1 题目分析2 代码实现3 运行结果1 题目分析数字线程的个数是字母线程的2倍 用信号量flag来控制打印的顺序:这里我们假设当flag = 1时打印数字,当flag = 2时打印字母 每轮打印中数字有以下规律:12 34 56 78 ~ 我们不难发现:当我们定义一个计数器count从1计数时,第一组数字为2*count-1、2*count,之后每组数字都遵循这个规律;...原创 2019-05-09 10:42:32 · 2730 阅读 · 0 评论 -
编写一个程序,启动三个线程,三个线程的名称分别是A,B,C;每个线程将自己的名称在屏幕上打印5遍,打印顺序分别是ABCABC...
目录1 题目分析2 代码实现3 运行结果1 题目分析各个线程依照A、B、C依次进行打印,我们可引用信号量flag来控制每次程序的打印顺序:当flag = 1时,打印线程A;当flag = 2时打印线程B;当flag = 3时,打印线程C。注:判断条件选用while循环,不能选用if判断,我在此处吃了亏~运行结果只是A、B线程循环打印线程名称 需要一个计数器count来控制打...原创 2019-05-09 12:33:32 · 1396 阅读 · 0 评论 -
数据结构--java语言实现反转单链表
目录1 题目描述2 解题思路3 代码实现1 题目描述输入一个链表,例如:12 -> 23 -> 34 -> 45 -> 56 -> null 输出:56 -> 45 -> 34 -> 23 -> 12 -> null,反转后输出新链表的表头,例如:2 解题思路首先我们拿到一个单链表,假设它不为空,且至少有2...原创 2019-05-19 19:17:47 · 210 阅读 · 0 评论 -
数据结构--Java语言实现插入排序
目录1 基本思想2实现2.1 直接插入排序2.2希尔排序1 基本思想把待排序的记录按其关键码值的大小逐个插入到一 个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。当只有一个记录时,该记录就记为有序序列,从第二个数开始进行插入排序。2实现2.1 直接插入排序当插入元素arr[i](i>=1)时,假设前面的arr[0],arr[...原创 2019-05-29 17:30:31 · 202 阅读 · 1 评论