首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据结构与算法十二)——结构初探

一、结构的基本介绍 如上图所示,就是一个结构。 (Graph),是由顶点的有限非空集合和顶点之间边的集合组成。图中有两个元素:顶点和边。...由无向边连接而成的称为无向。 (2)有向 & 有向边 如上图所示,顶点A与顶点C之间的连接的边是有方向的,只能由顶点C到顶点A,我们称这样的边为有向边。 由有向边连接而成的称为有向。...二、的存储——邻接矩阵 上面是一个结构,诸位可以想一下,如何将这个结构存储在计算机当中呢?...2,有向的存储 如上图所示,是一个有向。...3,网的存储 带权重的称为网。 网的顶点表与的顶点表的逻辑一样,是不需要改动的。 网的边表的节点结构需要在的边表的节点结构基础上再增加一个值域用于存储边的权重值。

64220

算法和数据结构: 十二 无向相关算法基础

从这篇文章开始介绍相关的算法,这也是Algorithms在线课程第二部分的第一次课程笔记。 的应用很广泛,也有很多非常有用的算法,当然也有很多待解决的问题,根据性质,可以分为无向和有向。...在讨论完的表示之后,我们来看下在图中比较重要的一种算法,即深度优先算法: 深度优先算法 在谈论深度优先算法之前,我们可以先看看迷宫探索问题。...深度优先搜索算法模拟迷宫探索。在实际的处理算法中,我们通常将的表示和的处理逻辑分开来。...总结 本文简要介绍了无向图中的深度优先和广度优先算法,这两种算法处理算法中的最基础算法,也是后续更复杂算法的基础。...其中的表示,算法与表示的分离这种思想在后续的算法介绍中会一直沿用,下文将讲解无向图中深度优先和广度优先的应用,以及利用这两种基本算法解决实际问题的应用。

54320
您找到你想要的搜索结果了吗?
是的
没有找到

算法指针算法

二、算法原理 如果用指针从前往后遍历,就拿例1来说, 就会出现值被覆盖的情况: 所以遍历顺序就不能从前往后。...可以先用指针算法:1.先判断cur位置;2.决定dest向后移动一步或者两步;3.判断一下dest是否已经到达结束位置;4.在把cur加加。...二、算法原理 利用数组是有序的,用指针算法来算。 定义两个指针,一个在左边,一个在右边。...二、算法原理 排序之后,数据是有序的,这里就用指针算法。...这里是三个数的和,可以先固定一个数a,仅想要保证这个a是小于0就行(在后面等于0相加的值不可能等于0),然后在该数后面的区间内,利用指针算法,快速找到两个数的和,者两个数的和是a的相反数,这样这三个数相加的时候

7400

算法指针算法 ( 指针算法分类 | 相向指针 | 有效回文串 )

文章目录 一、指针算法分类 二、相向指针示例 ( 有效回文串 ) 一、指针算法分类 ---- 面试时经常遇到 限制算法复杂度为 O ( n ) 的情况 , 就需要使用以下算法 : 指针算法...: 设置两个指针 ( 索引 ) , 进行不同方式的遍历 , 使用最高频的算法 ; 打擂台算法 : 设置一个擂主值 , 设置为无穷大或无穷小 , 通过遍历让该擂主值与遍历值打擂台 ; 求最大值最小值常用...; 单调栈算法 ; 单调队列算法 ; 指针算法分类 : 相向指针 : 判断一个字符串是否是回文串 , 从两边向中心遍历 ; 背向指针 : 查找一个字符串的最长回文子串使用的 " 中心线枚举算法 "...就是背向指针算法 , 从中心向两边遍历 ; ( 出现频率较 - 低 ) 同向指针 : 相向指针算法分类 : 翻转类型 : ① 翻转字符串 , ② 判断回文串 ; 两个指针分别指向收尾 , 两边往中间走...然后对比是否相等 ; 但是如果添加了上述要求 , 就需要处理大小写 , 特殊字符问题 , 有两种方案 : 创建新字符串 , 过滤掉大小写及特殊字符干扰, 然后翻转字符对比 , 这样会增加额外空间开销 ; 推荐使用指针算法

1.8K10

算法指针

指针 指针是一种思想或一种技巧并不是特别具体的算法。具体就是用两个变量动态存储两个结点,来方便我们进行一些操作。通常用在线性的数据结构中。...常见的指针方式 •同速指针:链表上两个指针,一个先出发,另一个后出发并以相同的速度跟随。...•求链表的逆:通过临时指针让指针同步前行•求链表倒数第k个元素:先让其中一个指针向前走k步,接着两个指针以同样的速度一起 向前进,直到前面的指针走到尽头了,则后面的指针即为倒数第k个元素 •快慢指针:...指针常用于线性结构:链表,数组 例题 151.反转链表 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。...输出:[1,2] 示例 2: 输入:head = [1,1,2,3,3] 输出:[1,2,3] 解题思路: •方法1:使用栈的思想,如果后面入的元素与栈顶元素相同,就略过该元素,继续遍历•方法2:指针

31920

从 0 开始学习 JavaScript 数据结构与算法十二

和其他数据结构一样,需要通过某种算法来遍历结构中每一个数据。...这样可以保证,在我们需要时,通过这种算法来访问某个顶点的数据以及它对应的边。 遍历的方式 的遍历思想 的遍历算法的思想在于必须访问每个第一次访问的节点,并且追踪有哪些顶点还没有被访问到。...有两种算法可以对进行遍历 广度优先搜索(Breadth-First Search, 简称 BFS) 深度优先搜索(Depth-First Search, 简称 DFS) 两种遍历算法,都需要明确指定第一个被访问的顶点...广度优先算法会从指定的第一个顶点开始遍历,先访问其所有的相邻点,就像一次访问的一层。...深度优先搜索算法的实现: 广度优先搜索算法我们使用的是队列,这里可以使用栈完成,也可以使用递归。

66120

TKDE2023 | 基于学习的社交推荐算法

TLDR: 本文将社交推荐任务建模在曲空间学习之下,并提出了一种基于学习的社交推荐模型。...更多社交推荐算法的背景知识与经典算法可参考社会化推荐浅谈和深度学习技术在社会化推荐场景中的总结。 然而,欧几里得空间在表示的自然幂律分布时会出现结构扭曲,导致基于的社交推荐结果不尽理想。...最近,一些研究探索了将嵌入学习转移到曲空间的替代方法,曲空间可以保留现实世界的层级结构。 然而,直接将当前的嵌入模型应用于社交推荐并非易事,因为存在两大挑战:网络异质性和社交扩散噪声。...为了解决上述挑战,本文提出了一种基于学习的社交推荐(HGSR)模型。首先,利用曲社交嵌入的预训练来探索社交结构,这可以保留社交网络的层级特性。...总之,本文提出了一种新颖的HGSR模型用于曲空间的社交推荐。为了利用社交影响扩散引入的异质性和噪声问题,设计了一种社交预训练增强的曲异质学习方法。

28710

算法专题】指针

指针 指针 常见的指针有两种形式,⼀种是对撞指针,⼀种是左右指针。 对撞指针:⼀般用于顺序结构中,也称左右指针。 对撞指针从两端向中间移动。...快乐数 题目链接 -> Leetcode -202.快乐数 Leetcode -202.快乐数 题目:编写一个算法来判断一个数 n 是不是快乐数。...那我们可以利用在两数之和那里用的指针思想,来对我们的暴力枚举做优化: i. 先排序; ii. 然后固定⼀个数 a : iii....在这个数后⾯的区间内,使用「指针算法」快速找到两个数之和等于 -a 即可。 但是要注意,这道题里面需要有「去重」操作: i....当使用完⼀次指针算法之后,固定的 a 也要「跳过重复」的元素 代码如下: class Solution { public: vector> threeSum

9110

基础算法篇——指针算法

基础算法篇——指针算法 本次我们介绍基础算法中的指针算法,我们会从下面几个角度来介绍: 指针简介 指针基本使用 最长连续不重复字符列 数组元素的目标和 判断子序列 指针简介 首先我们先来简单介绍一下指针...: 指针算法就是采用两个变量作为指针放在数组的某个部位来实现复杂度简化 我们来介绍一下指针的使用场景: 指针通常用于简化for循环的场景,将复杂度为O(N^2)变为O(N) 指针可以用于单个序列中...,例如我们之前的快速排序所使用的指针算法 指针可以用于多个序列中,例如我们之前的归并排序所使用的指针算法 我们的指针算法通常是由for的暴力求解优化得来的: // for循环O(n^2)...里面装有一些单词,单词由空格隔开,我们需要将他们单独打出来 思路解释: /* 我们采用指针算法 i指针指向单词的第一个字母,j指向单词后面的空格,我们只需要输出i和j-1之前的字母并隔开即可 */ 算法实现...}else { System.out.println("不是子序列"); } return; } } 结束语 好的,关于基础算法篇的指针算法就介绍到这里

23840

算法学习|指针

输入有序数组(https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/) 长按复制到浏览器即可到leetcode对应的题目, 算法的逻辑在具体的代码注释里...* * 思路: * 使用指针,一个指针指向值较小的元素,一个指针指向值较大的元素。 * 指向较小元素的指针从头向尾遍历,指向较大元素的指针从尾向头遍历。...* 快慢指针 * 使用指针,一个指针每次移动一个节点,一个指针每次移动两个节点,如果存在环,那么这两个指针一定会相遇。...* * 通过删除字符串 s 中的一个字符能得到字符串 t,可以认为 t 是 s 的子序列, * 我们可以使用指针来判断一个字符串是否为另一个字符串的子序列。

44830

绘制坐标轴

坐标轴作为常用的可视化方式之一,可以在同一张图中同时展示两个不同范围的数据,示例如下 ?...在matplotib中,有以下两种方式来实现一个坐标轴 1. secondary_axis系列函数 具体包含以下两种函数 1.secondary_xaxis 2.secondary_yaxis 第一个函数用于绘制...该函数的第一个参数用于指定第二个坐标轴的位置,对于y轴图表而言,取值范围包括left和right, 对于x轴的图表而言,取值范围包括top和bottom。...通过两个axes的叠加,可以轻松实现坐标,而且不同的axes绘图时使用不同的数据,更加的方便直观。...对于单个数据的坐标轴,通过secondary_axis系列函数,实现起来更加方便,对于多个数据叠加的坐标轴,则推荐使用twin系列函数来实现。 ·end·

1.5K40

算法(二)指针迭代

理解(不保证正确) 1,链表题应该在本子上画出过程,这样很容易得到算法。...now.next = temp; if(left==1) return pre; return head; } } 根据反转链表1的指针算法写出...2,正向指针 因为已经排好序,所以比较最小只需要比较最靠前的元素即可。 这里就能想到指针,但是这个方法必须新建一个新数组,空间复杂度高。...正向指针的逆想法 如果不想新建新数组的话,用最小覆盖可能会覆盖nums1原来的元素 所以我们可以想到用最大来覆盖,nums1最后的元素,因为nums1长度固定。...5,二叉树遍历 在算法(八)那篇文章里。 很重要。很重要。很重要。很重要。很重要。很重要。很重要。很重要。很重要。很重要。

25660
领券