
数据结构与算法
请叫我林小李
这个作者很懒,什么都没留下…
展开
-
实现超大整数(超过long长度范围)的加法运算
昨天笔试,遇到这么一个问题:如果系统要使用超大整数(超过long长度范围),请你设计一个数据结构来存储这种超大型数字以及设计一种算法来实现超大整数加法运算)。 其实这个问题很好解决,超大整数可以直接使用String来存储。对于两个String存储的超大整数的相加,先比较二者长度,在短的那个前面补0,使两个String一样长。然后从尾部开始,挨个取数,相加并进位即可。代码如下:public Stri原创 2015-11-03 11:28:15 · 10524 阅读 · 3 评论 -
去除字符串重复部分
昨天笔试有这么一个问题,去除一个字符数组的重复部分,不能开辟额外的空间。 思路大概如下: 利用字符串结束符 ‘\0’,和一个额外的下标index,从而实现原来字符数组的复用 1、对数组遍历,如果不为’\0’,做第二步 2、将当前元素的值赋给下标为index的数组,index往后移动一位 3、对当前元素之后的所有元素进行遍历,如果碰到和当前元素相同的,将其置为 ‘\0’ 4、对数组遍历结束原创 2015-10-24 11:31:38 · 835 阅读 · 0 评论 -
二叉树的常用操作
一、求二叉树高度/** * 求二叉树高度 * @param root * @return */ public int getHeight(Node root){ if(root==null){ return 0; } int l=getHeight(root.leftChild);原创 2015-10-14 22:47:17 · 416 阅读 · 0 评论 -
非递归实现二叉树的前、中、后序遍历
二叉树是数据结构里经常使用的一种数据结构,需要注意其和树的区别(二叉树的一个节点最多只能有2个子树,而树没这个限制),还有完全二叉树和满二叉树。 创建如下图的一颗二叉树:一、创建二叉树public class BinaryTree { private Node root=null; public BinaryTree(){ root=new Node("A");原创 2015-10-14 22:35:40 · 560 阅读 · 0 评论 -
非递归实现二叉树的层次遍历
非递归的层次遍历其实很简单。利用了队列先进先出的特点。 先将根节点入队。如果队列不为空,那么获得队首元素,对其访问。如果它的左子树不为空,那么加入队列,如果它的右子树不为空,那么加入队列/** * 层次遍历 * @param root */ public void levelOrder(Node root){ if(root==null){原创 2015-10-14 22:39:19 · 1197 阅读 · 0 评论 -
遗传算法在自动组卷中的应用
遗传算法在自动组卷中的应用遗传算法遗传算法(Genetic Algorithm)是一种模拟自然界的进化规律-优胜劣汰演化来的随机搜索算法,其在解决多种约束条件下的最优解这类问题上具有优秀的表现.1. 基本概念在遗传算法中有几个基本的概念:基因、个体、种群和进化.基因是个体的表现,不同个体的基因序列不同;个体是指单个的生命,个体是组成种群的基础;而进化的基本单位是种群,一个种群里面有多个个体;进化是指原创 2016-06-23 13:03:04 · 21561 阅读 · 6 评论