随笔分类 - 算法_数据结构
摘要:不太恰当的比喻: XM 指的是“小明”,也指的是“小萌” XM就是哈希值,小明和小萌就是拥有同一个哈希值的,存在同一个链表的元素。 想要获取小萌,首先使用hashcode获取到这两个人,然后再通过equals获取到小萌。 个人理解 哈希表其实就是一个一维数组,而数组中的每一个元素都是一个单向链表而已
阅读全文
摘要:直接使用equals方法 输出结果为:true 当然也可以先转换成String类型,再使用equals进行比较 但是不能使用==号比较使用==判断的话,比较的是地址 输出结果为:false
阅读全文
摘要:遍历List删除元素 方法一: 方法二: 遍历Map删除元素 方法一: 方法二:
阅读全文
摘要:Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。 HashMap HashMap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。遍历时,取得数据的顺序是完全随机的。 HashMap最多只允许一条记录
阅读全文
摘要:本文参考:http://www.cnblogs.com/a164266729/p/4561651.html,它以C#的语言讲述这个原理,觉得讲得很清楚,我把它的代码部分改成了Java代码。 数组、List和ArrayList的区别 数组在内存中是连续存储的,所以它的索引速度是非常的快,而且赋值与修改
阅读全文
摘要:unique()函数是一个去重函数,STL中unique的函数 unique的功能是去除相邻的重复元素(只保留一个),还有一个容易忽视的特性是它并不真正把重复的元素删除。他是c++中的函数,所以头文件要加#include<iostream>,#include<algoritjm>,具体用法如下: i
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4707题目大意:在一个无环的,从0开始发散状的地图里,找出各个距离0大于d的点的个数Sample Input110 20 10 20 31 41 52 63 74 86 9Sample Output2分析:从0点开始BFS,给每个点一个距离0点标记,再算出大于距离d一共多少个代码如下: 1 # include 2 # include 3 # include 4 # include 5 # include 6 # define N 100010 7 using namespace std; 8 9 .
阅读全文
摘要:敌兵布阵Problem DescriptionC国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少人,例如Derek问:“Tidy,马上汇报第3个营地到第10个营地共有多少人!”Tidy就要马上
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3442题目大意:三国时期,刘备逃亡。给定一个最大为50*50的地图,刘备在地图中只能往4个方向走。 地图中,A代表瞭望塔,攻击范围是2,攻击伤害是1; B 代表堡垒,攻击范围是3,攻击伤害是2; C 代表火焰,对于走在该位置上的单位造成3点伤害; D 代表弓箭手,攻击范围是2,攻击伤害是4; E 代表士兵,攻击范围是1,攻击伤害是5; $ 代表刘备; !代表目的地; # 代表障碍物 . 代表地板刘备不能穿过A,B,D,E。但是可以走上C和地板。 有3条重要规则:1.刘备不能被相同的...
阅读全文
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=423Sample Input3(A-B + C) - (A+(B - C)) - (C-(D- E) )((A)-( (B)))A-(B+C)Sample OutputA-B+C-(A+B-C)-(C-(D-E))A-BA-(B+C)题目大意:给出加减代数表达式,仅由变量(大写字母表示),圆括号,加号 '+', 减号'-'组成,要求去掉多余的括号,但是不能改变表达式中的加号和减号,也就是说如果括号外面是减号,那就不能去掉分析: 对于每
阅读全文
摘要:STL中map用法详解 说明:如果你具备一定的C++ template知识,即使你没有接触过STL,这个文章你也应该可能较轻易的看懂。本人水平有限,不当之处,望大家辅正。 一.Map概述 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可
阅读全文
摘要:头文件 函数简介 lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个大于等于value 的值。
阅读全文
摘要:short和int等一样,是C或C++的一种内部数据类型。用于表示有符号整数。不同的是,他们在内存中所占的空间大小不同,short通常为int所占一半,也有一些实现为和int一样,但不会比int大。所占内存空间不同,那么可用表示的整数范围也就不同。至于具体能表示什么范围,这个问题是体系结构和编译环境
阅读全文
摘要:全排列 •从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n各不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 •设一组数R={r1,r2,r3,...,rn},全排列为perm(R)。 n=1时,Perm(R)=r,其中r是集合中唯一元素 n>1时,Per
阅读全文
摘要:哈夫曼编码 • 编码 普通的编码都是定长的,比如常用的ASCII编码,每个字符都是8个bit • 变长编码 变长编码比固定编码好一些,即对频率高的字符赋以短编码,对频率低的字符赋以长编码。 a b c d e f 频率 45 13 12 16 9 5 固定 000 001 010 011 100 1
阅读全文