博客
关于我
Leedcode8-reorder-list
阅读量:794 次
发布时间:2023-01-30

本文共 899 字,大约阅读时间需要 2 分钟。

struct ListNode {

int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};

class Solution {

public:
void reorderList(ListNode *head) {
if (!head || !head->next) {
return;
}

// 大神思路:逆序插入法      // 首先记录所有节点的值,方便随机访问      vector
values; ListNode *ptr = head; while (ptr != nullptr) { values.push_back(ptr->val); ptr = ptr->next; } // 双指针遍历,逐步重组奇偶位置 int left = 0, right = values.size() - 1; ptr = head; while (left <= right) { // 处理当前位置为奇数的情况 if ((left - right) % 2 == 0) { ptr->val = values[left++]; } else { ptr->val = values[right--]; } ptr = ptr->next; } }

};

classifiers标题为“单链表排序算法”,内容描述着大神思路,该方法通过逆序插入法来优化链表排序的效率。该算法首先将所有节点的值存储在一个向量中,然后通过双指针操作将节点逐一插入到正确的位置。这种方法的复杂度为O(n), 且空间复杂度为O(1)。该方法的效率优于前面的错误解法,且在处理单链表排序任务时表现出色。”此优化后的版本保留了技术文档的核心内容,但更加简洁直观。

转载地址:http://uxgyk.baihongyu.com/

你可能感兴趣的文章
leetcode题解75-颜色分类
查看>>
leetcode题解767-重构字符串
查看>>
leetcode题解77-子集
查看>>
leetcode题解77-组合
查看>>
leetcode题解776-旋转字符串
查看>>
leetcode题解8-盛最多水的容器
查看>>
leetcode题解976-三角形的最大周长
查看>>
leetcode题解98-验证二叉搜索树
查看>>
LeetCode题解【打家劫舍】(中等难度)
查看>>
Leetcode题解(二)
查看>>
left join on、where后面的条件的区别
查看>>
left join right inner join 区别
查看>>
leftjoin多个on条件_MySQL:left join 避坑指南
查看>>
legend2---开发日志3(thinkphp的入口目录是public的体现是什么)
查看>>
legoblock秀上限
查看>>
LeNet介绍-ChatGPT4o作答
查看>>
LeNet剪枝
查看>>
Length of Last Word
查看>>
Lenovo E47A Ubuntu闪屏解决办法
查看>>
Leopard系统装好后不能从硬盘引导的朋友看过来
查看>>