![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
安小然然
这个作者很懒,什么都没留下…
展开
-
反转链表Java实现
需求 输入一个链表,反转链表后,输出新链表的表头。输入:{1,2,3}结果:{3,2,1}核心思想 反转的意思就是上一个节点等于下一个节点 1->2 1<-2 链表中第一个元素上一个节点为null; null->1->2 第二个节点的上一个节点是第一个节点 1->2 流程图 代码实现 /* public class ListNode ...原创 2021-08-02 14:03:51 · 1310 阅读 · 0 评论 -
判断链表中是否有环
需求 判断链表中是否有环解决思路 1 首先要知道概念 什么是 有环的链表 2 快慢指针思想,快指针在不断的循环中总会追上慢指针什么是 --- 有环链表 有环的意思,你注意6下一个指针再次指向3,类似一个圆,不断在一个位置转圈快慢指针思想 快指针一次走两步,慢指针一次走一步,最后两个指针会在某一处相遇代码实现 /** * Definition for singly-linked list....原创 2021-08-03 11:44:45 · 175 阅读 · 0 评论 -
线性表数据结构讲解
线性表是什么 线性表是 n 个数据元素的有限序列,最常用的是链式表达,通常也叫作线性链表或者链表节点是什么 存储的数据元素也叫作结点,一个结点存储的就是一条数据记录节点的数据结构构成 每个结点的结构包括两个部分:第一是具体的数据值;第二是指向下一个结点的指针。链表的数据结构表现形式在链表的最前面,通常会有个头指针用来指向第一个结点。对于链表的最后一个结点,由于在它之后没有下一个结点,因此它的指针是个空指针。...原创 2021-01-11 11:01:08 · 302 阅读 · 0 评论 -
评估三层for循环加一层顺序for循环的时间复杂度
代码for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { for (k = 0; k < n; k++) { } for (m = 0; m < n; m++) { } }}时间复杂度分析 第一层for循环时间复杂度是O(n) 第二层for循环时间复杂度是O(n) 第三层里面那个顺序for循环,所以复杂度是O(n...原创 2021-01-04 14:56:07 · 1603 阅读 · 0 评论 -
求出数组中出现次数最多的元素及出现次数,并分析时间复杂度和空间复杂度
算法原理 采用双层for循环 定义三个变量值 tmp出现次数最多的变量值,max 出现最多的次数,tmp_max 本次循环出现的次数 第一层for循环,循环每一个元素,借助第二层循环得到的当前元素出现的次数,并且和最大次数的变量比较,假如大于,则更新 tmp变量 和max 第二层for循环,计算该元素的出现次数、复杂度分析 空间复杂度,对于输入量n来说,10 和100空间复杂度都是消耗三个变量值,所以空间复杂度是O(1) 时间复杂度,对于输入量n来...原创 2021-01-04 14:47:30 · 1231 阅读 · 0 评论 -
输入一个数组,求其中的最大值,并分析其时间复杂度和空间复杂度
算法分析定义一个变量tmp,初始值为0,循环数组,每次跟tmp比较大小,大于的话更新 tmp的值代码实现 public static void main(String[] args) { int[] arrs = new int[]{2,3,6,2,6,8}; int tmp=0; for(int i = 0 ; i<arrs.length;i++){ if(arrs[i]>tmp...原创 2021-01-04 10:33:24 · 3764 阅读 · 3 评论 -
输入一个数组,输出与之逆序的数组
算法思路 通过一次for循环,将数组的倒数第一位和第一位做替换,以此类推,所以事件复杂度和空间复杂度都是O(n)public static void main(String[] args) { int a[] = {1,2,3,4,5}; int b[] = new int[5]; for(int i = 0 ; i<a.length;i++){ b[i]= a[a.length-i-1]; }...原创 2020-12-30 11:35:50 · 871 阅读 · 0 评论 -
复杂度入门讲解
复杂度是什么复杂度是衡量代码运行效率的重要度量因素复杂度是一个关于输入数据量 n 的函数。假设你的代码复杂度是 f(n),那么就用个大写字母 O 和括号,把 f(n) 括起来就可以了,即 O(f(n))。例如,O(n) 表示的是,复杂度与计算实例的个数 n 线性相关;O(logn) 表示的是,复杂度与计算实例的个数 n 对数相关复杂度的计算公式首先,复杂度与具体的常系数无关,例如 O(n) 和 O(2n) 表示的是同样的复杂度。我们详细分析下,O(2n) 等于 O(n+n...原创 2020-12-28 15:18:04 · 370 阅读 · 0 评论