数据结构与算法-基础算法篇-二叉树

1.树 1.树的常用概念 根节点、叶子节点、父节点、子节点、兄弟节点,还有节点的高度、深度以及层数,树的高度。 2.概念解释 节点:树中的每个元素称为节点父子关系:相邻两节点的连线,称为父子关系根节点:没有父节点的节点叶子节点:没有子节点的节点父节点:指向子节点的节点子节点:被父节点指向的节点兄弟节点:具有相同父节点的多个节点称为兄弟节点关系节点的高度:节点到叶子节点的最长路径所包含的边数节点的深度:根节点到节点的路径所包含的边数节点的层数:节点的深度+1(根节点的层数是1)树的高度:等于根节点的高度 2

  • 0
  • 0
  • 发布于 2021-12-12 00:31
  • 阅读 ( 572 )

数据结构和算法-基础篇-红黑树(上)

1.红黑树 1.平衡二叉树 二叉查找树是常用的一种二叉树,他支持快速插入,删除,查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是O(logn) 1.平衡二叉查找树 二叉树中任意一个节点的左右子树的高度相差不能大于1。所以完全二叉树,满二叉树都是平衡二叉树,非完全二叉树也有可能是平衡二叉树。平衡二叉查找树不仅满足上面平衡二叉树的定义,还满足二叉查找树的特点。发明平衡二叉查找树这类数据结构的初衷是解决普通二叉查找树在频繁的插入,删除等动态更新的情况下,出现时间复杂度退化的问题。所以,平

  • 0
  • 0
  • 发布于 2021-12-12 00:31
  • 阅读 ( 532 )

推荐一个 GitHub 上 3.2 万 Star 的算法可视化项目

点击上方 Java后端,选择 设为星标 优质文章,及时送达 算法的重要性不言而喻啦,每次求职之前刷LeetCode刷的头昏脑胀,大厂笔试时看到Hard级的算法题瞬间头皮发麻。 算法是很重要,问题是如何更好的学习好算法才是关键。一提到算法,大部分人应该都像我一样吧,立马跑到Leetcode网站上刷题,LeetCode收录了许多互联网公司的算法题目,被称为刷题神器。 LeetCode地址 https://leetcode.com/ 不过今天,是打算跟大家重新介绍一个GitHub上的开源项目:algorit

  • 0
  • 0
  • 发布于 2021-12-11 21:22
  • 阅读 ( 493 )

脉脉转发3W次的字节内部首发“数据结构算法”手册!惨大厂被封杀

数据结构对于计算机、应用数学及各类工程领域具有非常重要的作用。然而初学者在刚接触数据结构时往往会忽视其重要性,认为还不如学个C或者Java来得直接一点。 但是,算法与数据结构是程序设计中相辅相成的两个方面,是计算机学科的重要基石。 著名计算机科学家尼古拉斯·沃斯(NiklausWirth)有一句在计算机领域人尽皆知的名言“算法+数据结构=程序”(Algorithm+DataStructures=Programs)。 数据结构,是抽象地表示数据的方式;算法,则是计算的一系列有效、通用的步骤。那么,如何打好程

  • 0
  • 0
  • 发布于 2021-12-11 21:16
  • 阅读 ( 484 )

最全解密微信红包随机算法(含代码实现)

code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 “ 本文内容编写时,参考了网上的资料,详见“参考资料”部分,感谢分享者。。本文已同步发布于52im社区:http://www.52im.net/thread-3125-1-1.html(点击“阅读原文”进入) 1、引言 这个系列文章已经整理了10篇,但都没有涉及到具体的红包算法实现,主要有以下两方面原因。一方面是各社交/IM产品中的红包功能同质化严重,红包算法的“可玩性”便是“核心竞争力所在”,这是同质化功能的差异化竞争思

  • 0
  • 0
  • 发布于 2021-12-11 21:09
  • 阅读 ( 558 )

贪心算法和动态规划的个人理解

最近通过各个公司的笔试题发现,好多编程题都是贪心算法和动态规划算法。这两个也容易混淆,在网上也看了好多这两种算法的解析,通过这篇文章写下自己对这两种算法的理解。 使用动态规划的最大特性是原问题的最优解必须包含子问题的最优解。下面通过一个例子解释:求图的最短路径是解释动态规划最容易的问题。下面是一个多段图: 按照贪心算法的思路解决问题可以得到:v1到v2:1到2最短,所以选择2,总长s为2。v2到v3:2到5最短,所以选择5,总长为2+6=8。v3到v4:5到10最短,所以选择10,总长为8+6=14。v

  • 0
  • 0
  • 发布于 2021-12-11 18:54
  • 阅读 ( 366 )

几种常见GC算法介绍

本文主要是对常用的GC算法(引用计数法、标记-清除法、复制算法、标记-清除算法)作出相关的说明,并对相关知识做简单的介绍。 一、什么是堆?     堆指用于动态(即执行程序时)存放对象的内存空间。而这个对象,在面向对象的编程中,它指“具有属性和行为的事物”,然而在GC的世界中,对象表示的是“通过应用程序利用的数据的集合”。具体到Java堆,它是所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。(此处的对象实例可以理解为前面所说的对象,

  • 0
  • 0
  • 发布于 2021-12-11 18:25
  • 阅读 ( 345 )

数据结构与算法-环形队列

环形队列 队列是一种常用的数据结构,这种结构保证了数据是按照“先进先出”的原则进行操作的,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,即最先进去的元素也是最先出来的元素.环形队列是一种特殊的队列结构,保证了元素也是先进先出的,但与一般队列的区别是,他们是环形的,即队列头部的上个元素是队列尾部,通常是容纳元素数固定的一个闭环。 应用场景 餐厅的叫号系统 整体思路 设置一个固定长度为maxSize的数组,设置一个记录数组下次插入数据的下标rear,一个数组下次删除数

  • 0
  • 0
  • 发布于 2021-12-11 18:06
  • 阅读 ( 482 )

c++实现aes加密算法,对字符串进行加密

 我的blog中,已经写过一篇关于aes加密算法的调用。不过使用的参数必须时unsignedchar类型。我们在编程中使用最多的char类型,我从网上下载了一个代码,追加了一部分代码。   其主要功能进行实现unsignedchar类型数据到char类型转化,将unsignedchar结果与16进制字符串串之间的转化。代码如下: 点击(此处)折叠或打开 #ifndefAES_H#defineAES_H#include <string.h>class AES{public:  AES(u

  • 0
  • 0
  • 发布于 2021-12-11 18:01
  • 阅读 ( 344 )

LeetCode题解(2)两数相加

LeetCode题解(2)两数相加 问题 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字0之外,这两个数都不会以0开头。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/add-two-numbers著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 问题分析 因为列表的第一个数是个数,因此,我们按

  • 0
  • 0
  • 发布于 2021-12-11 17:18
  • 阅读 ( 345 )

LeetCode题解(3)最长子串长度

LeetCode题解(3)最长子串长度 题目 给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。 示例1: 输入:s=“abcabcbb”输出:3解释:因为无重复字符的最长子串是“abc”,所以其长度为3。示例2: 输入:s=“bbbbb”输出:1解释:因为无重复字符的最长子串是“b”,所以其长度为1。示例3: 输入:s=“pwwkew”输出:3解释:因为无重复字符的最长子串是“wke”,所以其长度为3。请注意,你的答案必须是子串的长度,“pwke”是一个子序列,不是子串。示例4: 输入:s=“

  • 0
  • 0
  • 发布于 2021-12-11 17:17
  • 阅读 ( 389 )

Apollo感知模块算法详解

原文出处:1.https://github.com/ApolloAuto/apollo/blob/master/docs/specs/perception_apollo_3.0.md 2.https://github.com/ApolloAuto/apollo/blob/master/docs/specs/perception_apollo_3.0_cn.md 感知 Apollo3.0 June27,2018 简介 Apollo3.0主要针对采用低成本传感器的L2级别自动驾驶车辆。在车道中的自动驾驶车辆通

  • 0
  • 0
  • 发布于 2021-12-11 17:07
  • 阅读 ( 412 )

matlab 局部线性回归,【吴恩达 机器学习】线性回归算法Matlab实现

一,单变量线性回归: 1.数据分布,x轴是属性城市人口,y轴是标签值盈利: 2.目的:使用一个线性函数去拟合上面这些数据; 该线性函数如下只有两个参数,利用梯度下降找出使损失值最小时,对应的两个参数值,即得到了线性函数。 算法三要素: 1)设置线性函数,即假设函数(Hypothesis); 2)选定损失函数J, 3)梯度下降,找到使得J值最小时,对应的theta_0,theta_1。 J值最小,预测的h_theta(x)值就会越接近标签纸y 3.梯度下降: 找损失函数的最小值,高数知识可知对函数求导等

  • 0
  • 0
  • 发布于 2021-11-28 10:14
  • 阅读 ( 309 )

【算法】局部加权回归(Lowess)

文章目录 一、简介1.1预测问题1.2平滑问题 二、算法讲解2.1算法思想2.2参数讲解2.3权值函数2.4回归迭代2.5间隔回归,中间插值2.6其他参数 三、实验效果3.1效果3.2效率3.3效果对比 一、简介 1.1预测问题 对于预测问题,回归中最简单的线性回归,是以线性的方法拟合出数据的趋势。但是对于有周期性,波动性的数据,并不能简单以线性的方式拟合,否则模型会偏差较大,而局部加权回归(lowess)能较好的处理这种问题。可以拟合出一条符合整体趋势的线,进而做预测。 1.2平滑问题 同时,局

  • 0
  • 0
  • 发布于 2021-11-28 09:07
  • 阅读 ( 428 )

https相关(证书,握手过程,加密算法)

https是什么,证书认证的原理     我们知道HTTPS其实就是HTTP+SSL/TLS的合体,它其实还是HTTP协议,只是在外面加了一层,SSL是一种加密安全协议,引入SSL的目的是为了解决HTTP协议在不可信网络中使用明文传输数据导致的安全性问题。可以说,整个互联网的通信安全,都是建立在SSL/TLS的安全性之上的。 SSL/TLS协议及其握手过程     TCP在建立连接时的三次握手,之所以需要TCP三次握手,是因为网络中存在延迟的重复分组,可能会导致服务器重复建立连接造成不必要的开销。SSL/

  • 0
  • 0
  • 发布于 2021-11-27 22:12
  • 阅读 ( 429 )

台大李宏毅-- 反向传播算法 Backpropagation

1.链式法则 2.反向传播算法实例 计算前向传播: 比如:你会发现,输入值就是前向传播中,要求求解的导数的值。 计算后向传播: 这里假设,一个样本造成的损失loss是:(每个样本有两个输入x1,x2) 综上所述: 由上图可得,在反向传输中,在计算过程中,是先算出最末尾的 ∂C∂y1,∂C∂y2 ∂ C ∂ y 1 , ∂ C ∂ y 2 ,再算出倒数第二个的偏导

  • 0
  • 0
  • 发布于 2021-06-27 12:24
  • 阅读 ( 265 )

高斯-赛德尔迭代算法(C++实现)

问题描述 输入:系数矩阵A,最大迭代次数N,初始向量,误差限e 输出:解向量 基本公式 流程图 算法实现#include<iostream> #include<iomanip> usingnamespacestd; //定义系数矩阵 doublea[50][50]={0}; //定义x1解的数组 doublerootX1[100]; //定义x2解的数组 doublerootX2[100]; //定义x3解的数组 doublerootX3[100]; //定义x1的迭代

  • 0
  • 0
  • 发布于 2021-06-27 12:23
  • 阅读 ( 294 )

算法#04--详解高斯牛顿迭代法原理和代码

最小二乘法–高斯牛顿迭代法 上一篇文章详解了最小二乘法的线性拟合。本文将详解最小二乘法的非线性拟合,高斯牛顿迭代法。 1.原理 高斯—牛顿迭代法的基本思想是使用泰勒级数展开式去近似地代替非线性回归模型,然后通过多次迭代,多次修正回归系数,使回归系数不断逼近非线性回归模型的最佳回归系数,最后使原模型的残差平方和达到最小。 ①已知m个点: ②函

  • 0
  • 0
  • 发布于 2021-06-27 12:22
  • 阅读 ( 409 )

传统波束形成的算法实现

最近学习了传统波束形成(CBF)的原理,尝试着写出识别一个单声源的波束形成程序。下面按照程序说明一下。 1、初始化 设置一些常数,例如抽样频率,所要计算的频率,时间步等。 clearall; closeall; clc; %---------初始化常量----------% c=334;   %声速c fs=1000;  %抽样频率fs T=0.1;   %?? t=0:1/fs:T; %时间[0,0.1] L=length(t);%时间长度 f=500;   %感兴趣的频率 w=2*pi*f;  %角频

  • 0
  • 0
  • 发布于 2021-06-27 12:19
  • 阅读 ( 378 )

python 笔试题 英方_经典算法题:公共子串(网易杭研2016春招笔试题)

脚本之家 你与百万开发者在一起 来自:网易杭研2016春招笔试题 题目: 给定两个字符串A,B(只包含26个英文字母),输出所有公共的最长子字符串(如果出现重复子串,则输出多次) 输入描述: 输入包括两行,每行为一个连续字符串(大小写敏感) 输出包括多行,每行为扫描到的最长公共子串,按照该子串在字符串A(即第一行输入字符串)中出现的先后次序输出 样例输入: abcxyzabcrst opqr

  • 0
  • 0
  • 发布于 2021-06-27 04:05
  • 阅读 ( 248 )

今天,有什么经验需要分享呢?

立即撰写