自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

猛龙过蒋的专栏

算法学习

  • 博客(22)
  • 收藏
  • 关注

原创 获取下一秒时间

使用JAVA的工具包Calendar和格式控制SimpleDateFormatpublic static void main(String[] args) throws Exception { final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Calendar cal = Calendar

2016-08-27 21:24:20 931

原创 求字符串中字符只出现一次的的第一个字符

求字符串中字符只出现一次的的字符串,需要借助hashtable的int数组,存放字符出现的个数,然后遍历只出现一次的第一个字符。hashtable长度是256,因为字符是一个字节,即256的长度。实现过程如下所示:package structs.string;/** * @author jcm * *时间 2016年8月27日 */public class FindNotCom

2016-08-27 20:34:59 489

原创 返回字符串的最长数字串

返回字符串的最长数字串,需要定义两个长度,分别是最大数字串长度和当前最新数字串长度,还需要定义两个buffer缓存,分别是最大数字串缓存和当前最新数字串缓存,如果字符数组有一个字符不是数字,则重置当前最大数字串长度和当前最新数字串缓存,否则接着判断最大数字串长度和当前最新数字串长度哪个大,如果大,需要交换位置,这里没有考虑如果数字串长度相同的。实现过程如下所示:package structs.

2016-08-27 17:42:07 1528

原创 整数转化为字符串

整数转化为字符串首先要判断整数是否小于0的过程,实现过程如下所示:package structs.string;/** * @author jcm * *时间 2016年8月27日 */public class NumToString { public static void main(String[] args) { System.out.println(numToStr

2016-08-27 15:45:54 554

原创 字符串转化为整数

字符串转化为整数,需要判断是不是全部的数字字符串,如果是,把字符串转化成字符数组,然后去遍历转化为整数。实现过程如下所示:package structs.string;/** * @author jcm * *时间 2016年8月27日 */public class StringToNum { public static void main(String[] args) {

2016-08-27 15:42:32 515

原创 扑克洗牌

扑克洗牌,总共是54张牌,要把牌打乱顺序,那么需要一个随机数的下标,然后和循环的下标交换,完成扑克洗牌。实现过程如下所示:/** * @author jcm * *时间 2016年8月27日 */public class XiPai { public static void main(String[] args) { xiPai(); } /** * 洗牌 */

2016-08-27 10:36:30 497

原创 二叉树的最大距离

二叉树的最大距离,要求二叉树的最大距离,需要借助深度来判断,这里我创建了一个定义深度和结点距离的类,如下所示:/** * @author jcm * 二叉树的最大距离 *时间 2016年8月26日 */class DepthAndDistance{ public int maxDepth; public int maxDistance; public DepthAndDista

2016-08-26 15:28:57 531

原创 打印二叉树,并且要有层次感的

打印二叉树,要具有层次感,其实现过程如下所示: //中序遍历,通过n控制层数 public static void show(BinaryTreeNode root,int n){ if(root == null){ return ; }else{ show(root.leftTreeNode,n+1); for (int i=0;i<n;i++){ Sys

2016-08-26 15:25:02 528

原创 定义二叉树

这个专题我只描述关于数据结构相关的二叉树,既然要描述二叉树,所以先 要定义好与二叉树有关的类先创建二叉树的结点,结点包括数据域,指向左子树结点的指针和指向右子树结点的指针创建二叉树结点如下所示:package structs.tree;/** * @author jcm * @see 创建二叉树结点的类 * 时间 2016年8月25日 */public class Bina

2016-08-26 15:11:35 527

原创 从尾到头打印链表

从尾到头打印链表,由于单链表只有一个指针,而且是单向的访问。所以要用栈或者递归来实现从尾到头打印单链表。用栈和递归实现如下所示:package cn.edu.nwu.structs.linklist;import java.util.ArrayList;import java.util.Stack;/** * @author jcm * *时间 2016年8月22日 */p

2016-08-24 20:45:06 560

原创 二维数组中的查找

题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。分析可知,由于数组已经是有序的,所以查找时,只要从最右上方开始遍历,当目标值大于最右边值,说明内循环的所有数都小于目标值,直接break跳出内循环。实现过程如下所示:/** * @author jc

2016-08-24 17:30:58 226

原创 调整数组的顺序使奇数位于偶数的前面

调整数组的顺序使奇数位于偶数的前面,使用快速排序的思想来完成功能。实现过程如下所示:/** * @author jcm * @see 调整数组的顺序使奇数位于偶数的前面 * @param arr 数组 */ public static void reOrder(int[] arr){ int length = arr.length; if(length==0 ||

2016-08-24 16:14:27 254

原创 在O(1)时间删除链表结点

在O(1)时间删除链表结点,首先分析链表是不是空的,其次要分析要删除的结点是否存在,最后分析链表是不是要删除的尾结点。其实现过程如下所示:package cn.edu.nwu.structs.linklist;/** * @author jcm * *时间 2016年8月28日 */public class DeleteNode { /** * @author jcm

2016-08-24 15:26:26 249

原创 判断链表是不是循环链表

为了验证链表是不是循环链表,首先要创建循环链表,其次是打印循环链表,验证循环链表是不是创建成功,最后写函数判断是不是循环链表。创建循环链表代码如下所示: /** * @author jcm * @see 创建循环链表 * @param list */ public void createCircularLinkList(Node head) { //构建循环链表

2016-08-23 23:34:23 1880

原创 单链表的中间结点

单链表的中间结点,首先需要判断链表的长度,当链表的长度少于3时,则返回null,其次定义两个指针,让一个指针firstNode走两步,另一个指针secondNode走一步,当firstNode指针走到链表的尾部时,返回secondNode指针。实现过程如下所示:package cn.edu.nwu.structs.linklist;/** * @author jcm * *时间 2

2016-08-23 19:22:59 398

原创 单链表的反转(用循环和递归实现单链表反转)

单链表的反转,首先要考虑,如果链表是空链表或者是一个链表,则不需要反转。其次要考虑反转时,需要三个指针,分别是前一个指针,当前指针,和下一个指针。最后要把头结点指针的指向赋值null,同时头结点指针重新指向前一个指针。分别用非递归和递归实现单链表反转。循环实现单链表反转:package cn.edu.nwu.structs.linklist;/** * @author jcm *

2016-08-23 18:46:34 956

原创 删除单链表的第i个位置的结点

删除单链表的第i个位置的结点,首先需要判断是不是空链表,其次判断删除位置是否合法,最后判断是不是删除第一个结点,实现过程如下所示:package cn.edu.nwu.structs.linklist;/** * @author jcm * 删除链表第i个位置的结点 * 时间 2016年8月23日 */public class DeleteLinkListNode { pub

2016-08-23 14:52:22 6256 1

原创 在单链表的第i个位置插入一个新结点

在单链表的第i个位置插入一个新结点,首先要判断链表是不是空的,其次要找到链表的第i-1个结点位置,最后还要考虑是不是在第1个位置插入一个数据元素,要注意是不是尾结点后一位插入一个新结点。实现过程如下所示:package cn.edu.nwu.structs.linklist;/** * @author jcm * *时间 2016年8月23日 */public class In

2016-08-23 14:03:29 15222

原创 合并两个有序递增的链表,使得合并后新链表还是有序的

合并两个有序递增的单链表,使得合并后,新链表也是递增有序的。这里分别使用循环、递归实现合并有序链表循环实现链表合并和递归实现链表的合并如下所示:package cn.edu.nwu.structs.linklist;/** * @author jcm * *时间 2016年8月22日 */public class MergeLinkList { /** * @author

2016-08-22 21:29:30 1708

原创 查找并输出单链表的倒数第k个结点

要输出单链表的倒数第k个结点,可以先遍历整个链表,求出链表大小,假设链表大小是n,再次遍历链表n-k+1次,这个链表就是我们要输出的链表结点,但是发现实现这个功能需要遍历两次。改进一次遍历完成输出倒数第k个结点,这里用两个结点指针实现一次遍历,先让第一个结点指针遍历k-1次,然后同时让两个结点指针同时移动,始终使两个结点指针结点相差是k-1个,直到第一个结点指针到达链表表尾,那么第2个结点指针是要

2016-08-22 19:14:53 692

原创 求单链表结点个数

要获取单链表结点个数,需要判断单链表是不是空链表,如果是空链表,则返回0,如果不是,遍历单链表,定义当前结点指向头指针,然后while循环,只要满足当前结点不等于null,结点长度加1。实现过程分别是循环遍历和递归循环遍历实现过程如下所示:package cn.edu.nwu.structs.linklist;/** * @author jcm * *时间 2016年8月23日

2016-08-22 17:07:22 8009

原创 头插法尾插法创建单链表和遍历单链表

单链表是有数据域和指针域结点组成的,所以要创建单链表,需要定义结点。定义结点如下所示:package structs.link;/** * @author jcm * *时间 2016年8月21日 */public class Node { public Object data;//数据域 public Node next;//指向下一个结点的指针域 public Node(

2016-08-22 16:14:54 2262

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除