
Java
文章平均质量分 69
qq_39435120
这个作者很懒,什么都没留下…
展开
-
BigInteger类型的应用
Java中最大的整型数据类型是long,可以表示2^63-1~-2^63,但有时需要表示更大的数,就要使用BigInteger类型。使用前首先要导入java.math.BigInteger包,BigInteger理论上支持无限位长度,内部通过一系列算法将一个大数拆分后进行保存,同时也支持各种常见的运算。方法 ...原创 2018-03-24 19:53:29 · 218 阅读 · 0 评论 -
BigDecimal类型的应用
与BigInteger一样,当浮点数的长度过大导致double无法表示时,就要使用BigDecimal类型来表示。使用前需要导入java.math.BigDecimal包,支持各种常见的运算。方法 参数类型 返回类型BigDecimal int BigDecimalBigDecimal St...原创 2018-03-24 21:34:37 · 278 阅读 · 0 评论 -
二叉树递归、非递归遍历(Java实现)
遍历是对一颗二叉树最基本的操作,有前序遍历、中序遍历、后序遍历和层次遍历四种,都可以通过递归或者数据结构实现。假定叶子结构如下:static class leaf{ int value; leaf left,right; leaf(int i){ this.value = i; } public String toString() { ...原创 2018-03-30 19:12:33 · 383 阅读 · 0 评论 -
Java中的浅拷贝与深拷贝
Java中的对象都有一个方法叫clone(),是从Object类中继承而来的,它的作用是复制一个对象并返回,除了在堆中的地址不一样以外,对象里的实例变量、方法都与原对象完全一致。调用该方法前必须先重写clone(),而重写则需要先实现Cloneable接口,直接重写会抛出CloneNotSupportedException异常。下面举个例子:class person implements Cl...原创 2018-03-25 20:48:51 · 173 阅读 · 0 评论 -
优先队列的基本操作实现与应用(Java实现)
优先队列实质上是一颗完全二叉树,其所有的父节点都比子节点大(或小),也被称为大根堆(或小根堆),其堆顶的元素一定是这组元素的最大(小)值。 和其他数据结构一样,堆有构造、插入、删除、查找等操作。下面举例用了一个int类型的arr数组存放元素,top记录堆底元素的下标。构造一个堆:由于堆实质是一颗完全二叉树,因此可以用数组方便地表示。构造一个堆时,有两种方法,一种是将元素依次插入,每次插入时都对此做...原创 2018-04-02 13:41:59 · 1003 阅读 · 0 评论 -
反转链表(Java实现)
反转链表是最基础的数据结构练习题,主要是注意一下边界处理和指针方向,下面提供了两种常用思路。假定节点结构为:static class node{ Object value; node next; node(Object o){ this.value = o; }}头结点也已经声明好了:static node head;思路1:头插法。public st...原创 2018-03-28 13:24:31 · 274 阅读 · 0 评论 -
求一个链表是否有环、环的长度、环的入口(Java实现)
求一个链表是否有环是比较常问的面试题,下面我们来看下三种常见的思路,假定节点结构为:static class node{ Object value; node next; node(Object o){ this.value = o; }}头结点也已经声明好了:static node head; 思路1:用两个指针指向头结点,一个指针每次向前走一步,然...原创 2018-03-28 23:04:51 · 1657 阅读 · 0 评论 -
求两链表是否相交(Java实现)
求两个链表相交的思路与求环比较相似,下面我们来看下几种常见的思路,假定节点结构为:static class node{ Object value; node next; node(Object o){ this.value = o; }}头结点也已经声明好了:static node head1;static node head2; 思路 1:逐个尝试,...原创 2018-03-29 13:28:30 · 1161 阅读 · 0 评论 -
第九届蓝桥杯国赛JavaB组第二题:最大乘积(全排列)
对于1~9的九个数字,我们往中间插入乘号,它们的乘积也可能是1~9组成的一个排列,如:132 * 965874 = 127495368135627 * 948 = 128574396612 * 954783 = 584327196 那么求它们的乘积最大是多少。 思路:直接对1~9执行全排列,每次拍好后尝试往中间插入乘号并计算它们的积,如果积只包含1~9且不存在重复数字,则与之前记录的最大值比较。p...原创 2018-05-29 14:43:14 · 1185 阅读 · 0 评论