![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
综合应用题
喜欢喝可乐的Rivendell
这个作者很懒,什么都没留下…
展开
-
328. 奇偶链表
给定单链表的头节点 head,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。请注意,偶数组和奇数组内部的相对顺序应该与输入时保持一致。 你必须在 O(1) 的额外空间复杂度和 O(n) 的时间复杂度下解决这个问题。 /** * 相当于维护了两个链表,一个偶数链表和一个奇数链表,让两个奇偶指针分别遍历,最后在将偶链表的头结点接到奇链表后 */ struct ListNode* oddEven.原创 2022-05-06 22:22:22 · 320 阅读 · 0 评论 -
删除顺序表中值所有值为x的元素
要求:删除一个顺序表中值为x的元素,时间复杂度为O(n),空间复杂度为O(1) 本体来自王道2023数据结构中顺序表解答题中的第3题,需要在空间复杂度和时间复杂度上符合要求,因此很难使用常规的删除操作,顺序表的删除一般时间复杂度为O(n),最坏的情况下遍历一次加删除n个元素,时间复杂度为O(n^2),显然是不合适的,而且要存储多个数组下标也不符合空间复杂度O(1)的要求,因此我们只有采用别的办法。 bool del_all_x(sqList &L, int x) { if (L.leng原创 2022-04-22 18:29:44 · 2080 阅读 · 1 评论 -
顺序表的反转
实现一个高效算法,将顺序表L的所有元素逆置,要求空间复杂度为O(1) 本题来自王道数据结构2023顺序表中的综合应用题的第三题,题中要求反转一个顺序表,并要求空间复杂度为O(1) 分析: 由于有空间复杂度的约束,所以我们不能简单的重现new一个链表,然后使用头插法去创建。因此为了解决问题很自然想到了双指针,通过前后对比来轻松实现顺序表的反转 //定义一个顺序表 typedef struct { ElementType *elem; int length; } sqList; bool原创 2022-04-22 18:21:25 · 735 阅读 · 0 评论