数据结构与算法
文章平均质量分 68
本专栏记录数据结构与算法的一些原理,经典题目以及常用API
Infinity_and_beyond
艰难中探索……
展开
-
蚁群算法ACS处理旅行商问题TSP【Java实现】
蚁群算法是一种群体智能算法,模拟了蚂蚁寻找食物时的行为,通过蚂蚁之间的信息交流和合作,最终实现全局最优解的寻找。蚁群算法的基本思想是将搜索空间看作一个由节点组成的图,每个节点代表一种可能的解决方案,而边则代表两个节点之间的关联关系。在这个图中,一只蚂蚁在搜索过程中会沿着路径移动,。同时,蚂蚁在移动的过程中也会依据信息素的浓度,更有可能选择路径上信息素浓度较高的节点。蚂蚁群算法的核心是信息素的更新和挥发。原创 2023-05-13 18:43:02 · 1024 阅读 · 0 评论 -
有向无环图的最长路径【Java实现】
现有一个共n个顶点、m条边的有向无环图(假设顶点编号为从0到n-1),求图的所有路径中边权之和的最大值(不固定起点和终点)原创 2023-03-12 21:59:24 · 796 阅读 · 0 评论 -
最长回文子串【Java实现】
现有一个字符串s,求s的最长回文子串的长度。原创 2023-03-11 13:47:08 · 1116 阅读 · 0 评论 -
学校的班级个数【并查集基础应用,Java实现】
现有一个学校,学校中有若干个班级,每个班级中有若干个学生,每个学生只会存在于一个班级中。如果学生A和学生B处于一个班级,学生B和学生C处于一个班级,那么我们称学生A和学生C也处于一个班级。现已知学校中共n个学生(编号为从1到n),并给出m组学生关系(指定两个学生处于一个班级),问总共有多少个班级。原创 2023-03-05 20:40:28 · 543 阅读 · 0 评论 -
二叉树的最近公共祖先【Java实现】
现有一棵n个结点的二叉树(结点编号为从0到n-1,根结点为0号结点),求两个指定编号结点的最近公共祖先。注:二叉树上两个结点A、B的最近公共祖先是指:二叉树上存在的一个结点P,使得P既是A的祖先,又是B的祖先,并且P需要离根结点尽可能远(即层号尽可能大)。原创 2023-03-05 17:19:48 · 935 阅读 · 1 评论 -
层序序列+中序序列构建二叉树【Java实现】
现有一棵n个结点的二叉树(结点编号为从0到n-1),已知其和中序序列,求先序序列。原创 2023-03-01 20:50:15 · 878 阅读 · 0 评论 -
迷宫最短路径【Java实现】
现有一个n∗m大小的迷宫,其中1表示不可通过的墙壁,0表示平地。每次移动只能向上下左右移动一格,且只能移动到平地上。假设左上角坐标是(1,1),行数增加的方向为x增长的方向,列数增加的方向为y增长的方向,求从迷宫左上角到右下角的最少步数的路径。原创 2023-02-10 13:54:14 · 1649 阅读 · 0 评论 -
C++算法题常用API
最近再备考天梯赛,发现其中题目对Java选手不太友好,同样的算法往往需要修改成C/C++才能得到满分,因此重新捡回来一些C++的知识1. 头文件使用内置函数时往往需要调入相应的头文件,对于新手而言可能对这些头文件不太熟悉,因此直接用一条语句将所有头文件调入即可#include<bits/stdc++.h>using namespace std; //有此语句才能使用cin和cout,可以简单这么理解2. 输入输出//若是读取时以空格作为分隔符则使用cin<<原创 2022-04-18 22:00:17 · 1507 阅读 · 0 评论 -
LeetCode热题100详解(Java)【已根据标签分类】
最近想系统的刷LeetCode,看了很多LeetCode刷题攻略后决定从LeetCode热题100开始,按照顺序每天两题。困难的先跳过(能力不足),其余的题目会把解题思路和代码都放在这篇文章里,当作每天打卡,也欢迎同样想刷LeetCode的同学一起交流1. 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。输入:nu原创 2021-01-23 22:22:54 · 1959 阅读 · 0 评论 -
考研数据结构程序题常见代码【C语言实现】
考研院校要求C语言实现数据结构,可前期做数据结构都是用Java实现,因此对于C不那么熟悉,花了一些时间重新捡起来C的语法,程序题通常不会考太过复杂的算法,因此自己将辅导书上一些母题进行了实现,其中层序遍历部分需要用到队列,查了一下发现C语言没有现成的头文件调入使用,因此这部分用了C++的语法,除此之外皆为C的语法,现整理如下链表结构体实现链表样例#include<stdio.h>#include<stdlib.h>typedef struct Node{ int nu.原创 2021-10-10 14:45:03 · 3796 阅读 · 3 评论 -
Java算法题常用API整理总结
1. 栈和队列LinkeList使用push插入元素时【栈】,头部元素peek为栈顶元素使用addLast插入元素时,头部元素peek为队首元素通常创建一个对象专精一个数据结构,不要串用1.1 栈常用方法push //栈顶插入元素pop //返回栈顶元素并弹出peek //返回栈顶元素但不弹出1.2 队列常用方法addFirst //头插addLast //尾插getFirst //获取队列头元素getLast //获取队列尾元素poll原创 2022-03-08 14:19:30 · 4096 阅读 · 0 评论 -
平衡二叉树旋转原理【超详细解读】
1. 理解前的知识储备二叉排序树通常二叉排序树呈现的特点是左子树元素值<根节点值<右子树元素值即右子树元素全部大于左子树元素及根节点;左子树元素全部小于右子树元素及根节点平衡二叉树左右子树高度差小于等于1的二叉排序树最小不平衡树一棵二叉排序树中左右子树高度差大于1的最小单位树。平衡二叉树插入新节点后只可能出现一棵最小不平衡树,经过平衡调整后的平衡二叉树不存在最小不平衡树以下是两个例子,红笔圈起来的部分即最小不平衡树2.LL旋转当新节点添加在最小原创 2022-03-16 19:19:41 · 5767 阅读 · 8 评论