当前位置: 首页 > news >正文

【Leetcode】328. 奇偶链表

目录

  • 一、题目
  • 二、思路
    • 2.1 解题思路
    • 2.2 代码尝试
    • 2.3 疑难问题
    • 2.4 AI复盘
  • 三、解法
  • 四、收获
    • 4.1 心得
    • 4.2 举一反三

一、题目


在这里插入图片描述

二、思路


2.1 解题思路

2.2 代码尝试

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* oddEvenList(ListNode* head) {
        int n =head->val%2;
        ListNode* p=head->next;
        ListNode* pre=head;
        ListNode* dummy=new ListNode(0);
        ListNode* tail=dummy;
        dummy->next=tail;
        while(p){
            if(p->val%2==n){
                //如果和表头一样
                pre=p;
                p=p->next;
            }else{
                //和表头不一样,就要移到尾指针
                tail->next=p;
                tail=p;
                pre->next=p->next;
                p=p->next;


            }
        }
        //最后将两个链表连接
        p->next=dummy->next->next;
        return head;
    }
};

2.3 疑难问题

2.4 AI复盘

原代码中使用了额外的 dummy 节点和 tail 指针来管理偶数节点,但实际上可以通过两个指针 odd 和 even 来分别管理奇数节点和偶数节点。
一般不会超过两个指针

三、解法


class Solution {
public:
    ListNode* oddEvenList(ListNode* head) {
        if (head == nullptr) {
            return head;
        }
        ListNode* evenHead = head->next;
        ListNode* odd = head;
        ListNode* even = evenHead;
        while (even != nullptr && even->next != nullptr) {
            odd->next = even->next;
            odd = odd->next;
            even->next = odd->next;
            even = even->next;
        }
        odd->next = evenHead;
        return head;
    }
};

作者:力扣官方题解
链接:https://leetcode.cn/problems/odd-even-linked-list/solutions/482737/qi-ou-lian-biao-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

四、收获


4.1 心得

其实就是双指针吧,双指针的两种形式,一头一尾向中间遍历,另一种就是两个指针头两条链了

4.2 举一反三

相关文章:

  • element-ui progress 组件源码分享
  • 初探大模型开发:使用 LangChain 和 DeepSeek 构建简单 Demo
  • vue中js简单创建一个事件中心/中间件/eventBus
  • P1591 阶乘数码
  • BFS,DFS带图详解+蓝桥杯算法题+经典例题
  • 如何在前端发版时实现向客户端推送版本更新消息
  • Java Date 判断两个Date范围在第几季度
  • 使用 Path 对象来定义路径
  • 在Vue3中使用Echarts的示例
  • 用户行为路径分析(Google Analytics数据挖掘)
  • Linux系统移植篇(十一)Linux 内核启动流程
  • 通过Continue调用Deepseek API keys,搭建AI代码助手
  • MySQL程序
  • WPF CommunityToolkit.MVVM库的简单使用
  • vue3之写一个aichat ----vite.config.js
  • 路由器安全研究|D- Link DIR-823G v1.02 B05 复现与利用思路
  • 从零搭建 Vue 3 + Element Plus 项目实战指南
  • WPF跨平台开发探讨:借助相关技术实现多平台应用
  • mysql学习-常用sql语句
  • 解决SpringCloud整合Nacos启动报java.lang.IllegalArgumentException: illegal dataId
  • 这座古村,藏着多少赣韵风华
  • 总粉丝破亿!当网络大V遇见硬核科技,互联网时代如何书写上海故事?
  • 远离军事前线的另一面暗斗:除了“断水”,印度还试图牵制对巴国际援助
  • 习近平同俄罗斯总统普京茶叙
  • 洞天寻隐·学林纪丨玉洞桃源:仇英青绿山水画中的洞天与身体
  • “20后”比“60后”更容易遭遇极端气候事件