
数据结构与算法
文章平均质量分 61
数据结构与算法知识
轻松玩编程
你好,我是梦阳辰,一位渴望学习更多知识的在校小白。平时喜欢写写博客分享生活和编程相关知识,期待与你相遇!
展开
-
a进制转换成b进制(任意进制转换为任意进制)
【算法思想】先将a进制转换为10进制,再将该十进制数转换为b进制。特别注意的是,超过10进制的数有用字母表示,所以栈应该存字符。而且要转换的数据可能是超过10进制的数,所有用字符串表示。#include <iostream>#include <cstdio>#include <stack>#include<string>using namespace std;int main(){ stack<char> s;//初始化原创 2021-12-30 21:18:56 · 2245 阅读 · 2 评论 -
链表逆置算法总结
01.有头节点的单链表【方法1】头插法【方法2】修改指针的指向(三指针法)【方法3】利用栈的特性02.无头节点的单链表(原地工作)【方法1】修改指针的指向(三指针法)思想:新建三个指针pslow,pmid,pfast,pslow指向NULL,pmid和pfast指向首节点,让pfast往后移动,修改指针指向,让pmid指向pslow;然后让pslow和pmid同步往后移动,循环操作,当pfast指向NULL时,单链表就已经逆置了。pmid指向新链表的首节点。初始状态pfast往后移动原创 2021-12-29 14:34:36 · 1412 阅读 · 0 评论 -
并查集的个人理解与使用
站在巨人的肩膀上你会看的更远!每天一个数据结构或算法!对于并查集的理解你需要看:文章一:https://blog.youkuaiyun.com/the_best_man/article/details/62416938文章二:https://blog.youkuaiyun.com/jiahuan_/article/details/11267790601.并查集的使用并查集是由一个数组pre[],和两个函数构成的,一个函数为find()函数,用于寻找根节点的,第二个是join()函数,用于合并的。初始化我们将每一.原创 2021-02-26 14:11:09 · 272 阅读 · 0 评论 -
数据结构中常见的各种树原理详解(学习笔记)
文章目录01.回顾1.树02.二叉树3.堆3.二叉搜索树(二叉查找树)4.二叉平衡树(ALV)02. 2-3查找树2-3树的性质03.红黑树红黑树插入04.红黑树的删除05.Java手写红黑树01.回顾1.树树(tree)是一种抽象数据类型(ADT),用来模拟具有树状结构性质的数据集合。它是由n (n>0)个有限节点通过连接它们的边组成一个具有层次关系的集合。02.二叉树二叉树:树的每个节点最多只能有两个子节点。3.堆堆是计算机科学中一类特殊的数据结构的统称,堆通常可以被看做是一棵完全二原创 2021-02-24 14:50:51 · 2642 阅读 · 2 评论 -
Java实现旋转链表(Leetcode-61)
【题目描述】给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5->1->2->3->NULL示例 2:输入: 0->1->2-原创 2020-10-30 16:06:10 · 427 阅读 · 0 评论 -
(回溯算法)求解N皇后问题
“发光并非太阳的专利,你也可以发光。”你好,我是梦阳辰!期待与你相遇!【问题描述】1.设计算法求解N皇后问题,要求给出测试用例,并给出你的程序运行该测试案例之后得到的结果。N皇后问题研究的是如何将 N个皇后放置在 N×N 的棋盘上,并且使皇后彼此之间不能相互攻击。(1) 给定一个整数N,返回所有不同的N皇后问题的解决方案。(2) 如果只让求解N皇后问题不同解法的数目,又该如何设计算法。(1)算法的描述:1.定义解空间:n皇后问题要求每一个皇后在不同行、不同列、不同斜线,因此我们可以使用.原创 2020-06-18 19:51:48 · 3737 阅读 · 0 评论 -
动态规划算法的套路,动态规划入门
文章目录1. 动态规划解决的问题2.动态规划的算法思想3.动态规划的基本步骤1. 动态规划解决的问题动态规划解决递归算法大量的冗余计算,递归算法时自顶向下思想,中间有太多重复计算,而动态规划自底向上递推求解,用表(通常为数组)记录子问题的解,以便保存和以后的检索,从最简单的问题的解填起,以自底向上的方式填表,这就保证了当我们求解一个子问题的时候,所有的与子问题相关子子问题,都可以从表中直接取...原创 2020-04-29 19:44:12 · 586 阅读 · 0 评论 -
轻松搞定动态规划之最大子段和问题
【问题描述】给定由n个整数组成的序列a1,a2,…,a(n),求该序列字段和的最大值。分析当所有整数均为负值时定义其最大字段和为0。定义:即0或者,序列i到序列j之和两者之间最大的值。例如:序列(-2,11,-4,13,-5,-2),求最大字段和为:max=11+(-4)+13=20#include<iostream>const int MAX_LEN =100...原创 2020-03-31 19:06:14 · 803 阅读 · 0 评论 -
轻松搞定动态规划解决矩阵连乘问题
【问题描述】给定n个矩阵{A1,A2,…,An},其中Ai与Ai+1是可乘的,i=1,2…,n-1。如何确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。例如:A1是A(5*10)的矩阵;A2是A(10*15)的矩阵;A3是A(15*2)的矩阵;那么就有两种计算方式:1.(A1A2)A32. A1(A2A3)第一种乘法次数为:5 * 10 * ...原创 2020-03-31 16:27:03 · 1510 阅读 · 0 评论 -
计数问题(分治算法实现)
题目:给定n个整数的数组A以及一个数x,设计一个分治算法,求出x在数组中出现的次数,并分析时间复杂度。算法思想:先将问题划分为大小近似相等的两个字问题。对子问题递归调用该算法进行处理,递归出口为子问题只含一个元素,若该元素等于x,则返回x的出现次数为1,若该元素不等于x,则返回0原问题结果为这两个子问题所得结果之和。核心代码:int Countx(int arr[],int p,i...原创 2020-03-19 23:13:24 · 4459 阅读 · 0 评论 -
全排列问题(递归思想)
1原创 2020-03-11 10:33:01 · 643 阅读 · 0 评论 -
汉诺塔问题(递归思想)
问题描述: 有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。问:如何移?最少要移动多少次?解决思路:将A中的盘按要求移到C盘,分解为,将C中的n-1个移到B盘,再将A的最后一个盘移到...原创 2020-03-11 11:46:32 · 1452 阅读 · 0 评论 -
排序算法(三)
1.计数排序核心思想:对于输入的数据x存入标记为x的数组中,并统计x的个数。适用于数据范围小,数据量大的情况。算法的步骤如下:1.找出待排序的数组中最大和最小的元素2.统计数组中每个值为i的元素出现的次数,存入数组C的第i项3.对所有的计数累加(从C中的第一个元素开始,每一项和前一项相加)4.反向填充目标数组:将每个元素i放在新数组的第C(i)项,每放一个 元素就将C(i)减去1...原创 2020-03-09 16:51:17 · 176 阅读 · 0 评论 -
排序算法问题(二)
排序算法问题(一)文章目录堆排序==核心思想==:堆:排序:==For instance:==希尔排序==核心思想:==堆排序核心思想:堆:1.完全二叉树。2.父节点大于子节点。用一维数组表示完全二叉树,因此数列如果不满足父节点大于子节点就需要调整,从倒数第二行开始往前整理。排序:将堆中的根节点与最后一个节点位置交换,再砍断最后一个节点,得到的数即为最大值,再将剩下的数重新整理为...原创 2020-03-08 22:34:38 · 341 阅读 · 0 评论 -
递归真的那么难吗?
递归:将问题不断分解成子问题,自己调用自己求解的过程。递归关键是找递归关系和递归出口。For instance:1.求1~100的数据和。分析:可以将问题分解为求n-1项数据的和再加第n项数据。(n=100)递归关系:f(n)=f(n-1)+n递归出口:f(1)=1上代码:#include<stdio.h>#define N 100int f(int n){ ...原创 2020-03-08 17:21:55 · 1061 阅读 · 1 评论 -
排序算法问题(一)
1.直接选择排序核心思想:(假设从小到大排序)每次循环将子序列中最小的数放在第一位。==算法解决:==如何将最小的数放在第一位?1.用函数计算数组(c/c++)或列表的长度(python(len))2.控制每一个元素跟后边的子序列比较for(i=0;i<length-1;i++)或者for i in range(0,length-1)j//减一是因为最后一个数无子序列跟它比较...原创 2020-03-04 15:57:23 · 1205 阅读 · 0 评论