tags
date
type
status
slug
category
summary
password
icon
前言:
- 确实这几天都开摆了,挺累的,我已经分不清是身体的疲惫还是灵魂的空虚了,今天开始慢慢回归吧,前几天每天叫着调整状态,实际上呢,hhh
- 前几天难受,我写代码很爽,不写代码就难受,我前几天没写代码,所以难受,没毛病吧!
算法讲解012【入门】链表入门题目-划分链表
链表入门题目-划分链表
- 前置知识:理解链表及其基本调整 建议:做过这个题的同学跳过
- 给你一个链表的头节点 head 和一个特定值 x
请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前
你应当 保留 两个分区中每个节点的初始相对位置
链表题目在笔试、面试中的意义就是检验coding能力如何
更难的题目会在【必备】课程里讲述
链表入门题目-划分链表 视频笔记
- 两个分区(<x >=x)分别设置小头小尾,大头大尾
- 最开始要记环境
next=head.next head.next=null
- 这一步就是记录下当前节点的下一个节点,然后让当前节点
head
的下一个节点悬空 - 分区完之后要执行
head=next
该操作,为了更新当前节点为原来的head
的下一个节点,即链表中的下一个节点
- 开始遍历链表对每个节点进行分区放置
- 最开始的节点作为头和尾,然后
next
指针悬空
- 接着下一个同区的做尾,然后
next
指针同样悬空
- 每次找到同区的就串到尾的位置,然后更新该区的尾为该节点
- 最后小尾接大头
- tips:
- 要判断左边的头是不是空,如果是空,说明左边分区(<x)为空,直接返回右侧区域的头
- 否则就是左边的尾接上右边的头(
leftTail.next=rightHead
) - 最后返回左边的头即可
算法讲解013【入门】队列和栈-链表、数组实现
算法讲解013【入门】队列和栈-链表、数组实现大纲
- 前置知识:链表
建议:比较初级,会的可以跳过,但是要注意环形队列用数组实现这个高频考点
1)队列的介绍
2)栈的介绍
3)队列的链表实现和数组实现
4)栈的数组实现
5)环形队列用数组实现
队列、栈、双端队列可以组成非常多重要的数据结构
将在【必备】课程里继续
算法讲解013【入门】队列和栈-链表、数组实现视频笔记
- 队列
- 概念
- 先进先出
- 尾巴进,头部出
- 实现
- 头尾都空
- 一般数据量都是知道入多少个数的
- 这种情况使用array数组
- 左闭右开[L,R) L<R 有 L==R 无
- 初始:L R=0
- 插入:每次放进去让R位置,然后R++
- 弹出:拿L位置的数,返回之前,L++
- 栈
- 概念
- 先进后出(当成弹夹或者叠盘子一样)
- 尾巴进尾巴出
- 一般数据量都是知道入多少个数的
- 一般使用数组
- 插入:放 size size++
- 弹出,出 size-1 size--
- 环形队列
- 概念
- 同时在队列中不超过
- 实现
- 头l 尾r size = 0 ,要注意数组有个 limit
- 加入:加x,放尾,尾++,结束(size == limit ),尾回0
- 如果 r== limit - 1 说明下标到最末尾了,置0
- 弹出:拿头,头++,结束,头回0
- l 同理,下标到末尾,要置 0
- 取出尾巴的数字,要注意 r 的位置, 如果是 0 上一个是 limit-1 否则是 r-1
- size 用来 配合 头节点和尾节点的位置
- 作者:瑾墨
- 链接:https://www.gaoqilan.tech/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/10c1a31f-082e-800c-9206-fd79094ed74c
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。