算法
文章平均质量分 77
默默进步---一鸣惊人
勤思考多动手
展开
-
数据结构与算法——链表的创建,堆栈,队列
持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持前言本篇文章我们讲述一下链表的创建方法。链表创建的方法分为两种,主要分为头插法,和尾插法,也叫堆栈式和对列式。建立单链表算法总结:头插法:在链表的头部插入结点建立单链表,数据读入顺序和线性表中的逻辑顺序正好相反。即先入后出也叫堆栈式。 尾插法:在链表的尾部插入结点建立单链表,数据读入顺序和线性表中的逻辑顺序正好相同。即先入先出也叫对列式堆栈方式建立单链表(头插法)每次把新结点插入到链表的头部,使新插入的结点成原创 2021-05-11 22:05:45 · 462 阅读 · 0 评论 -
数据结构与算法——链式存储(链表)的插入及删除
持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持上篇文章我们讲述了链表的基本概念及一些查找遍历的方法,本篇我们主要将一下链表的插入删除操作,以及采用堆栈方式如何创建链表。链表的插入首先我们先看一下链表的插入是如何实现的在单链表中第i个数据元素之前插入一个数据元素,需要首先在单链表中找到第i-1个结点并由指针pre指示,然后申请一个新的结点并由指针p指示,其数据域的值为x,并让p结点的指针域指向第i个结点,然后修改第i-1个结点的指针使其指向s算法.原创 2021-05-10 21:39:50 · 9070 阅读 · 0 评论 -
数据结构与算法——带你走进链表(链式存储)的世界
持续分享嵌入式技术,操作系统,算法,c语言/python等,欢迎小友关注支持链式存储的定义采用链式存储结构的线性表称为链表 。不要求逻辑上相邻的两个数据元素物理上也相邻,它是通过“链”建立起数据元素之间的逻辑关系。因此对线性表的插入、删除不需要移动数据元素,只需要修改“链”为了便于理解可以通过下图表示:从上面可以看出,第一张图表示的是链表里面的数据,第二张图表示的是数据在存储空间里面具体存储的位置,数据明显是不连续的。既然数据是不连续的,那么我们要如何访问呢,下面..原创 2021-05-10 21:39:03 · 418 阅读 · 0 评论 -
数据结构之二叉树的创建
创建二叉树首先定义相关结构体及其他变量#define BT_LEFT 0 // 左边#define BT_RIGHT 1 // 右边// 定义新数据类型,用于封装函数typedef void BTree;typedef unsigned long long BTPos;// 定义二叉树左右指针结构体typedef struct _tag_BTreeNode BTreeNode;struct _tag_BTreeNode{ BT...转载 2021-05-07 20:31:15 · 4444 阅读 · 0 评论 -
数据结构与算法——探索线性表
目录线性表的定义顺序表顺序表的基本操作总结线性表的定义线性表的定义: 用数据元素的有限序列表示从上图我们可以看出来,线性表主要有以下几个特点:有且仅有一个开始结点(该结点只有一个直接后继结点,没有直接前趋结点) 有且仅有一个终端结点(该结点只有一个直接前趋结点,没有直接后继结点) 其余节点有且仅有一个直接前趋和一个直接后继 元素及元素之间的关系为线性例如:( A, B, C, D, …… , Z)数据元素都是数字; 元素间关系是线性同一线性表中.原创 2021-03-25 20:54:28 · 602 阅读 · 0 评论 -
数据结构与算法——算法基础
目录算法的特征算法设计的要求时间复杂度算法的特征一个算法应该具有以下五个重要的特征:有穷性(Finiteness)算法的有穷性是指算法必须能在执行有限个步骤之后终止;一个算法总是需要(输入合法的情况下)在有限的步骤结束,即每个算法需要在有穷的时间内完成。确切性(Definiteness)算法的每一步骤必须有确切的定义;任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得到相同的输出。输入项(Input)一个算法有0个或多个输入,以刻原创 2021-03-25 20:52:49 · 302 阅读 · 0 评论 -
常用10大排序算法总结,大厂必备
排序算法0. 算法概述 0.1 算法分类 0.2 算法复杂度 0.3 总结 1. 冒泡排序 1.1 算法描述 1.2 算法分析 1.3 动图演示 1.4 代码实现 2. 选择排序 2.1 算法描述 2.2 算法分析 2.3 动图演示 2.4 代码实现 3. 插入排序 3.1 算法描述 3.2 算法分析 3.3 动图演示 3.4 代码实现 4. 希尔排序 4.1 算法描述 4.2 算法分析 4.3 动图演转载 2020-12-03 22:15:27 · 373 阅读 · 0 评论 -
算法基本知识,入门必备
目录1.什么是算法2.算法的意义3.如何选择算法4.时间复杂度1.什么是时间复杂度2.时间复杂度的计算方法3.常见的时间复杂度5.常见的时间复杂度示例1、O(1)2、O(n2)3、O(n)4、Ο(n3)5、常用的算法的时间复杂度和空间复杂度6.排序实例1、冒泡排序原理分析:代码实现:2、选择排序代码实现:3、插入排序代码实现:4、快速排序排序示例:代码实现:1.什么是算法算法(algorithm):...转载 2020-12-03 21:56:06 · 4170 阅读 · 1 评论 -
LeetCode6:Z字形变换 --- LeetCode7:整数反转
6:Z字形变换 6. Z 字形变换 难度中等 将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z 字形排列。 比如输入字符串为"LEETCODEISHIRING"行数为 3 时,排列如下: L C I R E T O E S I I G E D H N 代码char * convert(char * s, int numRows){ int n = strlen(...原创 2020-11-30 22:06:44 · 230 阅读 · 0 评论 -
leetcode 5:最长回文子串
目录5:最长回文子串解题思路代码5:最长回文子串 5. 最长回文子串 难度中等 给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 解题思路...原创 2020-11-25 22:39:38 · 240 阅读 · 0 评论 -
leetcode 3:无重复字符的最长子串
目录3:无重复字符的最长子串解题思路代码3:无重复字符的最长子串 3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。 示例 2: 输入: "bbbbb" 输出: 1 解释: 因为无重复字符的...原创 2020-11-18 20:18:41 · 150 阅读 · 2 评论 -
哈希算法总结
目录1. Hash是什么,它的作用2. Hash算法有什么特点2.1 Hash在管理数据结构中的应用2.1 Hash在在密码学中的应用3. Hash算法是如何实现的?4. Hash有哪些流行的算法5. 那么,何谓Hash算法的「碰撞」?5.1 MD5的实际碰撞案例5.2 SHA家族算法以及SHA1碰撞6. Hash在Java中的应用6.1 HashMap的复杂度6.2HashMap的实现6.3 扩容6.4 扩容如何提升性能?6.5 HashMap.转载 2020-11-17 21:39:00 · 993 阅读 · 0 评论 -
LeetCode算法题解---两数之和,两数相加
目录一:两数之和解题思路代码二:两数相加解题思路代码一:两数之和 1. 两数之和 难度简单 给定一个整数数组nums和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9...原创 2020-11-15 15:25:56 · 905 阅读 · 0 评论 -
二分查找的原理及实现
目录前言算法分解前言二分查找算法思想非常简单,就是折半查找一个有序序列。通常情况,作为一个初学者,我甚至觉得二分查找过于简单,不值一提,最近经过思考,二分查找算法对于理论的要求并不是很高,但是若要把它变为有可行性的程序代码,则我们需要思考诸多的细节,否则这个代码写出来则是错误百出的。算法分解在这里,我用二分查找一个顺序排列的×××数组。若用C实现的话我们需要注意以下几个方面: 如何判断查找完成,定义返回值含义,定义退出循环条件 如何处理边界问题,例如1 2 3 这个序转载 2020-09-16 22:40:38 · 343 阅读 · 0 评论