算法通关
文章平均质量分 79
袖逸风清
同样是if else,有的人在if中迷失,有的人在else中找到出口。
展开
-
算法通关村第四关——青铜挑战——如何实现栈
栈仍然通过线性表或者链表来实现,栈是一种先入后出的数据结构,只允许在一端进行操作,入栈也叫压栈(push)、出栈也叫弹栈(pop),若栈中没有任何元素称为空栈。理论上,递归能实现的算法,栈也可以,只是有些问题用栈会非常复杂。栈是一种访问受限的线性表。栈是很多表达式、符号等运算的基础,也是。也可以用链表实现栈,插入和删除都在头结点进行就好了。我们先看看栈的Java代码,便于理解。原创 2023-09-06 10:53:22 · 941 阅读 · 1 评论 -
算法通关村第三关——青铜挑战——不简单的数组增删改查
这个方式需要开辟新的数组,也需要把新数组的值归还到原来的数组,时间和空间花销都挺大,所以有了升级版本:既然是有序数组,那么从后面开始合并,也是可以的。删除元素就不能一边查一边移啦~因为元素可能不存在。一个元素并返回其索引值,如果不存在,则返回-1。优化一下,把两个循环合成一个,边检查边后移。,不过这个是链表,但是思路是一样的。将一个元素添加到有序数组中。详细解析的思路可以参考。我有考虑到这么几个情况。线性表有两种存储方式。原创 2023-09-01 15:11:41 · 896 阅读 · 1 评论 -
算法通关村第二关——白银挑战——两两交换链表中的节点问题解析
【代码】算法通关村第二关——白银挑战——两两交换链表中的节点问题解析。原创 2023-08-31 00:33:35 · 695 阅读 · 0 评论 -
算法通关村第二关——青铜挑战——手写链表反转
通过画图,有一些概念更加清晰了,定义指针在分配内存之后,就是结点了。// next是一个指针// ans 是一个结点。原创 2023-08-30 18:00:21 · 871 阅读 · 0 评论 -
算法通关村第一关-----链表白银挑战--合并链表
从下标为0到下标为2的结点,指针移动了2次,即a-1次,从下标为0到下标为5,指针移动了5次,即b+1次,但在此之前,我们已经在list1中遍历到了下标为2的点,所以,只需要再遍历3次,也就是5-2次,即b+1-(a-1)次。删除list1中下标为3和4的两个结点,遍历list1时,需要将指针移到下标为2的结点,方可对下标为3以及其之后的结点进行删除操作,在删除操作之前,我们需要将指针移到下标为5的位置,以保留下标为5及其之后的结点。原问题为若干子问题,这些子问题都是原问题的规模较小的实例。原创 2023-08-30 13:31:06 · 805 阅读 · 0 评论 -
算法通关村第一关-----链表青铜挑战笔记
单链表原创 2023-08-28 20:44:03 · 1200 阅读 · 0 评论