数据结构

学习数据结构的第八天(二)

青春壹個敷衍的年華 提交于 2020-04-04 09:43:50
力扣T349 class Solution { public int[] intersection(int[] nums1, int[] nums2) { Set<Integer> set1=new TreeSet<>(); //这里又涉及到数组和set的转换了 Set<Integer> set2=new TreeSet<>(); for(int i:nums1) set1.add(i); for(int i:nums2) set2.add(i); Set<Integer> set3=new HashSet<>(); for(int i:set2) { if(set1.contains(i)) set3.add(i); } int []arr=new int [set3.size()]; //对于其他集合转为数组,总是要去考虑到指针的问题 int index=0; //treeset可以通过顺序的方法遍历吗? for(int i:set3) { arr[index++]=i; } // for(int i=0;i<set3.size();i++) // { // arr[i]=set3.get(i); get方法和数组的形式都是不可以的。 // } return arr; } } 这里的集合求交集和350的区别: 这里交集的含义: 返回的集合不能有重复的元素 不能有重复的元素这件事

学习数据结构的第八天(一)

浪尽此生 提交于 2020-04-04 09:12:37
Leetcode T350,求两个集合的交集,我的方法错误,但是错误在哪里。 1.学会了array如何转为list,其实还是一个个添加元素式转变最简单 ques:为什么要转变呢?其实自己就是认为在list里面可以去contains 一句话作为代码,所以自己去转变了 2.对于数组,直接是length属性,对于字符串,是length函数,对于抽象的而言,是size函数 4.对于list而言,对于每个index的元素,是用get方法来获得。 5.对于l1.retainAll(l2)而言,意思是说: 对于l1里面的每个元素,我都去检索查看,查看它是不是在L2里面 ,但是注意, 这个函数不能求到交集。最后的话,在l1剩下的,是存在于l2里面的元素。 这里讲的是:remove函数是怎么做的,remove函数的意思是:remove掉相应的index上面的元素。 key2:对于remove了之后,在list里面,它是去相应的索引值减一了的。 因此的话,为什么要i--,意思是说,并不要,少减少一个元素。(和之前链表的删除,删除了就不要移动,是同一个道理在。) 也就是对于list的一些操作都已经知道了。 包括增加,删除相应的index的元素,得到相应的index的元素。 而数组转为list,是一个个添加元素。list转为数组,就是直接用toArray方法。 String[] str2=list

数据结构绪论

时光总嘲笑我的痴心妄想 提交于 2020-04-04 08:59:15
/*--> */ /*--> */ 数据结构:问题的数学模型,是指互相之间存在着一种或多种特定关系的数据元素的集合 算法:求解问题的策略,操作步骤 /*--> */ /*--> */ 物理(存储)结构:数据结构在计算机中的表示 设计数据结构的存储结构时要存放所有数据元素的值和他们之间的逻辑关系 2种存储结构: 顺序存储映像—顺序存储结构借助数据元素在存储器中的相对位置来表示数据元素之间的逻辑关系 非顺序存储映像—链式存储结构借助指示数据元素存储地址的指针来表示数据元素之间的逻辑关系 /*--> */ /*--> */ 抽象数据类型(Abstract Data Type 简称ADT) :是指一个数学模型以及定义在此数学模型上的一组操作。 (D, R, P)三元组表示 : D是数据对象 R是D上的关系的集合 P是D上的操作的集合 定义格式: /*--> */ /*--> */ ADT抽象数据类型名 { 数据对象:〈数据对象的定义〉 数据关系:〈数据关系的定义〉 基本操作:〈基本操作的定义〉 } ADT抽象数据类型名 eg: ADT Complex { 数据对象:D={e1,e2|e1,e2∈RealSet} 数据关系:R1={ (e1,e2)| e1是实数部分 , e2 是复数的虚数部分 } 基本操作: AssignComplex( &Z, v1, v2 ) 操作结果:构造复数 Z

数据结构-线性表(2)

南笙酒味 提交于 2020-04-03 18:42:00
线性表定义: 线性表是最基本、最简单、也是最经常使用的一种数据结构。 线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其他数据元素都是首尾相接的。 线性表的逻辑结构简单,便于实现和操作。因此,线性表这样的数据结构在实际应用中是广泛採用的一种数据结构。 存储空间是否连续: 一、顺序表的特点是逻辑上相邻的数据元素,物理存储位置也相邻。而且。顺序表的存储空间须要预先分配。 长处: (1)方法简单,各种高级语言中都有数组。easy实现。 (2)不用为表示节点间的逻辑关系而添加额外的存储开销。 (3)顺序表具有按元素序号随机訪问的特点。 缺点: (1)在顺序表中做插入、删除操作时,平均移动表中的一半元素,因此对n较大的顺序表效率低。 (2)须要预先分配足够大的存储空间,预计过大,可能会导致顺序表后部大量闲置;预先分配过小。又会造成溢出。 二、在链表中逻辑上相邻的数据元素,物理存储位置不一定相邻,它使用指针实现元素之间的逻辑关系。而且。链表的存储空间是动态分配的。 长处 :插入、删除运算方便。 缺点: (1)要占用额外的存储空间存储元素之间的关系,存储密度减少。存储密度是指一个节点中数据元素所占的存储单元和整个节点所占的存储单元之比。 (2)链表不是一种随机存储结构。不能随机存取元素 链表的操作: 针对双向链表来说,如图: 删除结点: 代码 : p->prior-

数据结构与算法之美学习笔记:第二十二讲

本秂侑毒 提交于 2020-04-03 16:04:51
上一节,我讲了哈希算法的四个应⽤,它们分别是:安全加密、数据校验、唯⼀标识、散列函数。今天,我们再来看剩余三种应用: 负载均衡、 数据分片、 分布式存储 你可能已经发现,这三个应用都跟分布式系统有关。没错,今天我就带你看下, 哈希算法是如何解决这些分布式问题的。 应用五:负载均衡 1、如何实现一个会话粘滞的负载均衡算法 2、维护映射关系表的弊端 3、借助哈希算法完美解决 应用六:数据分片 1、引子案列 2、难点处理方案 3、问题所在痛点 4、如何快读判断图片是否在图库中 1、对数据进行分片、然后采用多机处理 2、具体方法 3、需要多少台机器 1、散列表中的每个数据单元包含两个信息 2、使用MD5 3、一台机器可以存多少图片 4、如果对一亿张图片构建索引,需要大约十几台机器 5、实际上 应用七:唯一标识 1、分布式存储 2、扩容带来的问题及痛点 1、方法 2、扩容存在的问题 3、雪崩效应、压垮数据库 3、将那个数据放到那个机器上呢 1、所以我们需要一种方法 2、解决方案 3、一致性哈希算法 解答开篇 & 内容小结 1、解答开篇 2、内容小结 来源: https://www.cnblogs.com/luoahong/p/11330458.html

c++(线性结构的处理)

喜欢而已 提交于 2020-04-03 14:30:14
我们知道,在内存中的空间都是连续的。也就是说,0x00000001下面的地址必然是0x00000002。所以,空间上是不会出现地址的突变的。那什么数据结构类型是连续内部空间呢,其实就是数组,当然也可以是堆。数组有很多优势,它可以在一段连续空间内保存相同类型的数据,并且对这些数据进行管理。所以从这个意义上说,掌握了数组才能说明你数据结构入门了。 那么,在实际开发中,我们对线性结构应该注意些什么呢?我个人的观点: (1)数组的资源是有限的,必须确定资源的范围 (2)数组中资源的申请和释放必须一一对应,否则很容易造成资源泄漏的现象 (3)数组中的注意事项同样应用于堆分配的连续内存资源空间中 下面是自己设计的一个int分配的小程序,大家可以一起尝试一下: a)设计内存节点的数据形式 typedef struct _DATA_NODE { int* pData; char* pFlag; int num; }DATA_NODE; #define STATUS int #define TRUE 1 #define FALSE 0 b)创建内存节点 DATA_NODE* malloc_node(int number) { DATA_NODE* pDataNode = NULL; if(0 == number) return NULL; pDataNode = (DATA_NODE*)

数据结构——概述

断了今生、忘了曾经 提交于 2020-04-03 13:14:33
本来大一下册的时候学过《数据结构》,只怪自己太无知,除了能够理解基本概念外其他的一无所知,上课也算是在坐飞机吧。无奈,现在大二又来看看,复习复习。不求深入的理解只求把书读薄吧。 数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的科学。 基本概念和术语:    数据: 是信息的载体,是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。数据不仅包括整型、实型等数值类型,还包括字符及声音、图像、视频等非数值类型。    数据元素: 是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为元素、结点、顶点、记录等。(比如鸡、鸭、鱼、鹅都是动物)    数据项: 指不可分割的、具有独立意义的最小数据单位,数据项有时也称为字段或域。(一个数据元素可以由若干个数据项组成)    数据对象: 是性质相同的数据元素的集合,是数据的子集。    数据结构: 是相互之间存在一种或多种特定关系的数据元素的集合。      从上到下是一种包含关系。    逻辑结构与物理结构:    逻辑结构: 是指数据对象中数据元素之间的相互关系。    逻辑结构分为一下四种: 集合结构:集合结构中的数据元素除了同属于一个集合外,它们之间没有任何其他关系。 线性结构:数据元素除了同属于一个集合外

数据结构和算法系列17 图

ε祈祈猫儿з 提交于 2020-04-03 11:49:52
数据结构和算法系列17 图 阅读目录 一,图的定义 二,图相关的概念和术语 三,图的创建和遍历 四,最小生成树和最短路径 五,算法实现 这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没有关系,我们一点一点地来总结,那么关于图我想从以下几点进行总结: 1,图的定义? 2,图相关的概念和术语? 3,图的创建和遍历? 4,最小生成树和最短路径? 5,算法实现? 回到顶部 一,图的定义 什么是图呢? 图是一种复杂的非线性结构。 在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继; 在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关; 而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。 图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E) 回到顶部 二,图相关的概念和术语 1,无向图和有向图 对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下: 因此,(V i ,V j )和(V j, V i )表示的是同一条边。注意, 无向图是用小括号,而下面介绍的有向图是用尖括号。 无向图的顶点集和边集分别表示为: V(G)={V 1 ,V 2 ,V

数据结构

烈酒焚心 提交于 2020-04-03 11:48:27
一,图的定义 什么是图呢? 图是一种复杂的非线性结构。 在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继; 在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关; 而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。 图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E) 回到顶部 二,图相关的概念和术语 1,无向图和有向图 对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下: 因此,(V i ,V j )和(V j, V i )表示的是同一条边。注意, 无向图是用小括号,而下面介绍的有向图是用尖括号。 无向图的顶点集和边集分别表示为: V(G)={V 1 ,V 2 ,V 3 ,V 4 ,V 5 } E(G)={(V 1 ,V 2 ),(V 1 ,V 4 ),(V 2 ,V 3 ),(V 2 ,V 5 ),(V 3 ,V 4 ),(V 3 ,V 5 ),(V 4 ,V 5 )} 对于一个图G,若每条边都是有方向的,则称该图为有向图。图示如下。 因此,<V i ,V j >和<V j, V i >是两条不同的有向边。注意,有向边又称为弧。 有向图的顶点集和边集分别表示为: V(G)

数据结构和算法系列-------- 图

眉间皱痕 提交于 2020-04-03 11:47:50
原文地址 http://www.cnblogs.com/mcgrady/archive/2013/09/23/3335847.html#_label2 阅读目录 一,图的定义 二,图相关的概念和术语 三,图的创建和遍历 四,最小生成树和最短路径 五,算法实现 这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没有关系,我们一点一点地来总结,那么关于图我想从以下几点进行总结: 1,图的定义? 2,图相关的概念和术语? 3,图的创建和遍历? 4,最小生成树和最短路径? 5,算法实现? 一,图的定义 什么是图呢? 图是一种复杂的非线性结构。 在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继; 在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关; 而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。 图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E) 二,图相关的概念和术语 1,无向图和有向图 对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下: 因此,(V i ,V j )和(V j, V i )表示的是同一条边。注意, 无向图是用小括号