
数据结构与算法
AddoilDan
这个作者很懒,什么都没留下…
展开
-
树------最优二叉树
哈夫曼树是带权路径最小的一种特殊二叉树,所以也称最优二叉树。在这里不讨论基本概念如如何计算路径等,而只着重于树的创建,具体过程让我们举例而言。其基本的原理为:将所有节点一开始都视为森林,每次从森林中选取两个根节点权值最小的树合并为一棵新树,新树的根节点大小为两个子节点大小的和,并将这棵新树重新加入到森林中。如此一来每一轮操作都可以简化为两个基本操作:合并两棵树、插入新树,直到森林中只剩下一...转载 2018-09-28 10:19:46 · 9532 阅读 · 1 评论 -
字符串--------去重
package NiuKeNet;import java.util.LinkedHashSet;import java.util.Set;public class Removesamestring { public static void main(String[] args) { System.out.println(removerepeatedchar("ddddccffgd...原创 2018-08-15 21:39:21 · 228 阅读 · 0 评论 -
字符串--------如何判断两个字符串是否由相同的字符组成
问题描述: 由相同的字符组成是指两个字符串,字母以及各个字母的个数是相同的,只是顺序不同。如:“aaaabbc”与“abcbaaa”是由相同字符组成。算法思路:方法一:排序法,也是最容易想到的方法,将两个字符串转换为字节数组,分别排序后,判断是否相同即可。package JBString;import java.util.Arrays;public cla...原创 2018-09-04 11:02:51 · 2450 阅读 · 0 评论 -
字符串--------如何删除字符串中重复的字符
问题描述:删除字符串中重复的字符,例如,”good”去掉重复的字符串后就变成”god”。算法思路:第一种方法:“蛮力法”,最简单的方法就是把这个字符串看作是一个字符数组,对该数组使用双重循环进行遍历,如果发现有重复的字符,就把该字符置为’\0’,最后再把这个字符数组中所有的’\0’去掉,此时得到的字符串就是删除重复字符后的目标字符串。第二种方法:空间换时间,由于常见的字符只...原创 2018-09-04 15:18:40 · 8518 阅读 · 0 评论 -
字符串--------按要求打印数组的排列情况
转自:https://blog.youkuaiyun.com/pengzhisen123/article/details/79573729问题描述:针对1、2、2、3、4、5 这6个数字,写一个函数,打印出所有不同的排列,例如512234、215432等,要求“4”不能在第三位,“3”与“5”不能相连。打印数组的排列组合方式最简单的方法就是递归,但本题有两个难点:第一,数字中存在重复数字;第二,明确规...转载 2018-09-04 17:16:19 · 175 阅读 · 0 评论 -
位运算-------移位实现乘法、二进制中1的个数
package JBBit;public class BitTest { /** * 移位实现乘法(2的n次方)操作 * 左移n位 */ public static int powerN(int m, int n){ for (int i = 0; i < n; i++) { m = m<<i; } return m; } /...原创 2018-09-22 21:33:00 · 461 阅读 · 0 评论 -
链表---------插入、查找、删除重复元素、找到倒数第K个值、找到反转、打印链表、查找中间元素、是否有环、是否相交
package JBLinkList;public class MyLinkList { Node head ; public MyLinkList(){ head = null; } /** * 添加结点(尾部) * @param d */ public void addNode(int d){ Node newNode = new Node(d); i...原创 2018-08-30 09:03:00 · 349 阅读 · 3 评论 -
树--------二叉树基本概念、性质、基本实现
基本概念有序树:如果将树中结点的各子树看成从左至右是有次序的(即不能互换),则称该树为有序树,否则称为无序树。在有序树中最左边的子树的根称为第一个孩子,最右边的称为最后一个孩子。森林: m棵互不相交的树的集合二叉树:节点的一个有限集合,该集合或者为空,或者由一个根节点加上两棵左子树和右子树组成。二叉树是每个节点最多有两个子树的树结构。根节点:一棵树最上面的节点称为根节点。父节点...原创 2018-09-05 21:10:32 · 3281 阅读 · 0 评论 -
栈队列---------栈和队列的实现、循环链表、栈和队列的转换
栈(先进后出)实现栈1、数组实现java程序员面试笔试宝典实现:package JBStack;import java.util.Arrays;public class MySqStack<E>{ private Object[] stack; //声明数组 private int size;//数组元素 public MySqStack() {//构造...原创 2018-09-22 21:33:38 · 419 阅读 · 0 评论 -
查找--------二叉树查找(递归和非递归)
折半查找 (二分查找)//折半查找public class BinarySearch { public int binarySearch(int[] arr, int n, int key){ int low=1;//从1开始 int high=n; while(low<=high){ int mid = (low+high)/2;...原创 2018-09-22 21:34:11 · 709 阅读 · 0 评论 -
字符串--------字符串实现全排列
方法一:递归实现(List)package Lantest;import java.util.*;/** * 先取出一个元素,让剩下的元素实现全排列 * 然后把这个元素添加到其他排列好的元素的首部 * @author Dan * */public class Hu_3FullArrangement1 { static List f(String s){ ...原创 2018-09-04 16:51:46 · 172 阅读 · 0 评论