轻量级题目!固定数组实现栈
固定数组实现队列:
引入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的情况
赋值运算符(=)的优先级小于逻辑运算符(==)
笔试求稳,面试求得瑟!