数据结构与算法
左神数据结构Day6
00 分钟
2024-9-25
2024-9-25
tags
date
type
status
slug
summary
category
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 用来 配合 头节点和尾节点的位置
上一篇
如何申请github学生包权益
下一篇
C数据结构

评论
Loading...