摘要: 数组篇一共有五个题目 第一题二分查找 值得注意的是,要自己想好 区间的边界到底是写左闭右开 还是左闭右闭 根据边界不同 while的条件和左右指针的移动会有差别 目前我的习惯是写左闭右开 还是固定一下习惯比较好 第二题是实现数组类的erase() 使用快慢指针可以做到在数组原地进行指定元素的移除而不 阅读全文
posted @ 2023-12-31 22:19 又见鸣蜩 阅读(8) 评论(0) 推荐(0)
摘要: 两两交换链表中的节点题目: 这题画一下链表会比较清晰 写写画画指针位置很快就可以写出来 一开始以为一个tmp就够用了 写着写着发现需要多一个 代码: 删除链表的倒数第N个节点: 没什么思路 只好先看看视频思路 视频思路很简单也很清晰 只需要两个指针 一快一慢 两指针的间隔就是n 这样当快指针到末尾的 阅读全文
posted @ 2023-12-30 17:01 又见鸣蜩 阅读(8) 评论(0) 推荐(0)
摘要: 首先是链表的删除操作 热身题 这里使用了一个新的头指针 这样在删除头指针的时候就不需要进行额外的判断 然后是链表类的实现 需要一点背诵加上深刻理解 有时候理解了但是写起来还是会有些指针边界的小问题 应该多写写多记一下就会好了 还有就是手写链表要常复习吧 学习新语言应该也要对这些常用的数据结构进行手写 阅读全文
posted @ 2023-12-29 22:54 又见鸣蜩 阅读(11) 评论(0) 推荐(0)
摘要: 有序数组的平方题目如下: 如果是可以使用O(nlogn)或以上复杂度的算法,本题可以简单的先平方一遍,然后使用排序算法就可以了 但是要求使用O(n)复杂度的算法,那么我首先想到的是昨天的快慢指针类似的想法: 我想先平方一次数组,然后从中间开始排序,如下 但是运行之后发现从中间开始进行相邻元素的比较好 阅读全文
posted @ 2023-12-28 20:28 又见鸣蜩 阅读(13) 评论(0) 推荐(0)
摘要: 二分法题目: 实现代码如下: 值得注意的是实现的方法是利用左闭右开区间还是左闭右闭区间 根据选择的不同,判断条件不同 将迭代的值带入到条件看符不符合区间要求就不会混淆二者 快慢指针题目: 本题实际上可以通过二重for循环暴力求解,复杂度是O(n^2) 但是测试过程中发现超时遂放弃 利用快慢指针在数组 阅读全文
posted @ 2023-12-27 11:48 又见鸣蜩 阅读(19) 评论(0) 推荐(0)