数据结构与算法
主要以实战为主,希望对小伙伴们有所帮助
小小李程序员
一只喜欢编程的夜猫子
展开
-
位运算中那些神奇的事
那么要想让y=a,可以利用A ^ A = 0的特性将x中的(a ^ b)消去b,即a ^ b ^ b (此时。如十进制下:10个8相加=80丢弃进位的8,即8+8+...+8=0。出现k次的数做不进位加法之后结果为0,所以除了只出现1次的那个数,其他的数。且数组中的每个元素只能访问一次的情况下找到这个重复的元素。那么可以利用A ^ A = 0 的性质,给上式子中的每一次数都进行再次异或,即。: 用这个结论将数组中所有元素进行不进位加法运算的结果为出现1次的那个数,原创 2024-02-07 10:30:00 · 912 阅读 · 2 评论 -
算法:弗洛里德算法Floyd
英文名Floyd作用:寻找图中任意两点之间的最短路径数据结构:邻接矩阵(二维数组)原创 2023-11-03 10:53:05 · 189 阅读 · 0 评论 -
数据结构:邻接矩阵与邻接表
用于反应图中任意两点之间的关联,用二维数组表示比较方便。原创 2023-11-03 10:48:29 · 290 阅读 · 0 评论 -
最短路径:迪杰斯特拉算法
英文名Dijkstra作用:找到路中指定起点到指定终点的带权最短路径。原创 2023-10-30 13:00:40 · 1021 阅读 · 1 评论 -
算法篇 : 并查集
英文名:union find set作用:合并集合,查询集合合并:将有直接关系的顶点放在一个集合里面查找:查询某个顶点所属的集合集合的标志:用祖先点的标号作为每个集合的标识。原创 2023-10-29 18:14:57 · 119 阅读 · 0 评论 -
链表各种基本操作
假结点:不存放数据的节点,使用假结点方便对链表的操作在这里使用一个假结点(myHead)作为链表头部,但是链表的实际有效头部是假结点的下一项((myHead->next),将假结点的下一项(myHead->next)作为链表的下标为0的位置//数据域int val;//指针域//构造函数。原创 2023-08-11 23:30:15 · 129 阅读 · 0 评论 -
数组模拟链表
通过开辟一定的空间用于模拟链表的所有操作,每个节点有。初始化所有数据域为null,这样便于判断某块空间是否被使用。原创 2023-08-10 23:43:23 · 64 阅读 · 0 评论 -
全排列 (方法二): 游戏类比法
通过一个游戏,即将手里的卡牌放盒子里的思想,来找出全排列小人每走到头一次。需要将5放入箱子2,但5已经被使用过(在其他箱子中),只能现将6放入箱子2,往后走。应将5放入箱子3,但5被使用了,同理卡牌6也被使用了,将卡牌9放入箱子3,往后走。现将卡牌5放入箱子1中,往后走。除了9以外没有可放置的卡牌,因为9已经放过,继续回退收回6。9还没有放入过箱子2,将9放到箱子2中,往后走。继续回退,执行相同的步骤,直到全部排列完为止。6还没有放过箱子3,将6放入箱子3,往后走。原创 2023-08-07 11:10:48 · 49 阅读 · 0 评论 -
最大公因数:欧几里得算法
求两个数字 m和n 的最大公因数,假设r是m%n的余数,原创 2023-08-07 10:57:05 · 50 阅读 · 0 评论 -
全排列(方法一)
1为头部排列的剩余两个位置其实就是 2 3的全排列。以2为头部的剩余元素进行全排列。以3为头部的剩余元素进行全排列。1为头部的剩余元素进行全排列。原创 2023-08-06 23:24:04 · 51 阅读 · 1 评论