数组结构实现栈及队列结构

轻量级题目!固定数组实现栈

 

固定数组实现队列:

引入size解耦,以使start和end相互独立,循环利用数组

 

婊子和牌坊的问题!:弹栈操作

轻量级:

换引用,我尼玛,牛逼啊!Data栈、Help栈,push到只剩一个,弹出,转换引用!

栈结构实现队列结构:

1.要倒一次倒完2.若pop栈中有数就不要再倒

猫狗队列问题:

略;

宏观问题解决:

coding一下

反转单向/双向链表,教材级别的题......

之字形打印,我尼玛,强无敌

三目运算符牛逼!

局部位置太恶心,宏观思路,宏观思维

 

题:在行跟列都排好序的矩阵中找数

从数据状况出发,从问法出发!

打印两个链表的公共部分:merge sort

 

链表问题:核心在于降低空间复杂度

笔试不考虑空间复杂度,面试要用更少空间,且时间复杂度维持在O(N),不用辅助空间来做。

判断一个链表是否为回文结构:

用栈逆序,再遍历对比

快指针(一次走两步)、慢指针(一次走一步),后半段入栈,再遍历前半部分,节省一半辅助空间

快指针走完之后,慢指针走到中点的位置。更改链表结构,再改回来。奇/偶判断分析,奇数个走至中点位置,偶数个走入中间两个的前一个点的位置,这是一个coding的问题。

荷兰国旗问题,稳定性不存在(原有次序不变),若转换为数组,则额外空间复杂度达不到O(1),coding能力

链表问题可以不用额外空间,为什么要有稳定性呢?

某一个区域可能没节点,此时应该怎么办?coding问题

一个大链表拆成三个小链表

找4,要从右上角开始找,为何要从右上角开始找,左下角呢?,可以。终止条件呢,越界。

题目13:复制含有随机指针节点的单向链表:

1.使用哈希表的方法:

哈希表:增删改查是常数时间O(1),拷贝节点会拷贝指针,然后再将指针指向新的next,额外时间复杂度为O(N)

2.不用哈希表的方法:

虽然不用哈希表了,但思想是不变的,即构建出新节点和复制后节点之间的联系。这题的难点在于指针与随机指针,需要重新赋值;

问题15:两个链表相交的一系列问题

判断一个单向链表有环无环,使用set来做,若不使用set呢?

玄学时刻:快指针、慢指针,快指针一次走两步,慢指针一次走一步,那么快指针与慢指针一定会相遇,快慢指针相遇后,快指针返回原节点,两个指针都执行递增1的操作,再次相遇时,该节点即为入环节点。

判断两个链表节点是否相等,是判断其内存地址是否相等。

需要对单链表相交的情况足够的了解!

1.都无环:不可能由一个节点伸出两个节点,因为是单项链表,每一个节点都只有一个next指针!

从两个链表头进行遍历,至末尾,如果两个链表头遍历至末尾的末尾值不相等时,那么这两个链表不相交;

寻找交点时,先遍历出n值,由n值判断长链表与短链表,而后长链表走出多余部分,之后两链表同时递增遍历同时走,直至走到相交点;

2.一个有环一个无环,不可能相交

3.都有环的情况:

1.loop1==loop2,可以复用都无环的情况;

2.loop1转遇到loop2和没遇到loop2的情况

赋值运算符(=)的优先级小于逻辑运算符(==)

笔试求稳,面试求得瑟!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值