牛客热题:链表的奇偶重排

news2024/11/22 9:31:50

📟作者主页:慢热的陕西人

🌴专栏链接:力扣刷题日记

📣欢迎各位大佬👍点赞🔥关注🚓收藏,🍉留言

在这里插入图片描述

文章目录

  • 牛客热题:链表的奇偶重排
    • 题目链接
    • 方法一:额外辅助数组
      • 思路
      • 代码
      • 复杂度
    • 方法二:双指针
      • 思路
      • 代码
      • 复杂度

牛客热题:链表的奇偶重排

题目链接

链表的奇偶重排_牛客题霸_牛客网 (nowcoder.com)

方法一:额外辅助数组

思路

  • 借助额外的两个数组
  • 一个存奇数位,一个存储偶数位
  • 将奇数位的数组先放入链表后,再将偶数位的数组放入链表

代码

    ListNode* oddEvenList(ListNode* head) 
    {
        vector<int> v1;
        vector<int> v2;

        ListNode* cur = head;

        int i = 1;
        while(cur != nullptr)
        {
            if(i % 2) v1.push_back(cur->val);
            else v2.push_back(cur->val);
            i++;
            cur = cur->next;
        }

        cur = head;
        for(auto vv : v1)
        {
            cur->val = vv;
            cur = cur->next;
        }
        
        for(auto vv : v2)
        {
            cur->val = vv;
            cur = cur->next;
        }

        return head;
    }

复杂度

时间复杂度:O(N), 遍历两次链表,一次取数字,一次放数字

空间复杂度:O(N), 借用了两个额外的数组空间,总长度为链表的长度

方法二:双指针

思路

  • 我们使用双指针的思路,一个指针odd用于遍历奇数节点,一个指针even用于遍历偶数节点
  • 首先我们将偶数节点都串连起来,奇数节点也串连起来。
  • 将奇数节点尾部和偶数起始节点连接起来即可

代码

    ListNode* oddEvenList(ListNode* head) 
    {
        if(head == nullptr || head->next == nullptr) return head;

        ListNode* odd = head;
        ListNode* even = head->next;

        ListNode* evenBegin = even;

        while(even != nullptr && even->next != nullptr)
        {
            odd->next = even->next;
            odd = odd->next;
            even->next = odd->next;
            even = even->next;
        }

        odd->next = evenBegin;

        return head;
    }

复杂度

时间复杂度:O(N),只遍历了一次链表

空间复杂度:O(1), 使用了常数个额外的变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1652109.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在家中访问一个网站的思考

在家中访问一个网站的思考 1、家庭网络简介2、家庭WLAN DHCP2.1、家庭路由器PPPOE拨号2.2、DHCP&#xff08;动态主机配置协议&#xff09;2.3、接入家庭网的主机IP地址2.4、家庭总线型以太网2.5、Mac地址2.6、ARP协议2.7、IP协议 & UDP/TCP协议2.8、NAT&#xff08;Netwo…

带你快速掌握Spring Task

Spring Task ⭐Spring Task 是Spirng框架提供的任务调度工具&#xff0c;可以按照约定的时间自动执行某个代码逻辑 &#x1f4cc;一款定时任务框架 应用场景 信用卡信息银行贷款信息火车票信息 只要是需要定时处理的场景都可以使用Spring Task 只要有定时&#xff0c;就会有…

论文润色就用意得辑:让你的学术之作更上一层楼

在学术的海洋里&#xff0c;每一篇论文都是一艘承载智慧与探索的小船。然而&#xff0c;好的内容也需要好的包装&#xff0c;才能更好地展现其价值。在这个追求精益求精的时代&#xff0c;意得辑以其专业的论文润色服务&#xff0c;成为了众多学者们的得力助手。 意得辑&#…

亚马逊自养号测评系统搭建技术要点解析

亚马逊自养号测评系统搭建技术要求主要涵盖了网络环境、IP管理、设备配置、浏览器防关联、支付卡选择与管理以及账号管理等多个方面。测评是否稳定长久这些条件都是缺一不可的&#xff0c;以下是一些具体的技术要求&#xff1a; 1. 网络环境&#xff1a;使用国外服务器在云端搭…

论文润色就用意得辑,打造学术精品新篇章

在学术的世界里&#xff0c;一篇优秀的论文如同璀璨的星辰&#xff0c;吸引着同行们的目光。然而&#xff0c;好的论文并非一蹴而就&#xff0c;它需要经过反复打磨、润色&#xff0c;才能焕发出夺目的光彩。在这个过程中&#xff0c;意得辑以其专业的服务、精湛的技巧&#xf…

geojson文件规格

geojson文件示例&#xff0c; {"type": "FeatureCollection","features": [{"type": "Feature","geometry": {"type": "Point","coordinates": [102.0, 0.5]},"properties&q…

Exness外汇大陆投资者开户详细流程!

Exness是一家全球领先的外汇和差价合约交易平台&#xff0c;因其高效稳定的服务和多样化的交易工具&#xff0c;受到广大投资者的青睐。然而&#xff0c;由于中国大陆用户无法直接访问Exness官网&#xff0c;想要开户的大陆投资者需要通过特定方式才能完成注册。本文将详细介绍…

windows10打印机共享完美解决方案

提到文件共享大家并不陌生,相关的还有打印机共享,这个多见于单位、复印部,在一个区域网里多台电脑共用一台打印机,打印资料非常方便,就包括在家里,我们现在一般都会有多台电脑或设备,通过家庭网络联接,如果共享一台打印机的话也是件便捷的事。 但是随着操作系统的更新…

哪个品牌的开放式耳机好用?五款畅销拔尖爆款力荐!

在耳机市场上&#xff0c;开放式耳机正逐渐成为一股新的风潮。它们以其独特的设计和卓越的音质吸引着越来越多的耳机爱好者。相较于传统的蓝牙耳机&#xff0c;开放式耳机不仅在音质上更胜一筹&#xff0c;更在佩戴舒适度上取得了显著突破。传统的蓝牙耳机&#xff0c;由于多采…

Spring Security Oauth2 JWT 添加额外信息

目录 一、问题描述 二、实现步骤 1、自定义TokenEnhancer 2、配置授权服务器 3、自定义UserDetails的User类 三、参考文档 一、问题描述 Oauth2里默认生成的JWT信息并没有用户信息&#xff0c;在认证授权后一般会返回这一部分信息&#xff0c;我对此进行了改造。 Oauth…

2024年数维杯数学建模A题思路

文章目录 1 赛题思路2 比赛日期和时间3 竞赛信息4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

【Redis】Redis命令(四)

1.Geospatial 操作命令 一种由三部分构成的集合&#xff0c;这种数据结构称为空间元素。经度&#xff08;longitude&#xff09;&#xff1a;有效经度为[-180&#xff0c;180]。正的表示东经&#xff0c;负的表示西经&#xff1b;纬度&#xff08;latitude&#xff09;&#xf…

机器人系统仿真

0、何为仿真 通过计算机对实体机器人系统进行模拟的技术。 1、为何仿真 低成本&#xff1a; 机器人实体一般价格昂贵&#xff0c;为降低机器人学习、调试的成本&#xff1b;高效&#xff1a; 搭建的环境更为多样且灵活&#xff0c;可以提高测试效率以及测试覆盖率&#xff1b…

DevSecOps 是什么?你知道吗?

使用工具自动进行安全检查和扫描。这些工具包括静态应用程序安全测试 (SAST)、动态应用程序安全测试 (DAST) 和依赖性扫描。 什么是 DevSecOps&#xff1f; DevSecOps 是 DevOps 实践的自然演进&#xff0c;其重点是将安全集成到软件开发和部署流程中。 DevSecOps 一词代表了…

SQLSERVER CPU占用过高的优化

有同事反应服务器CPU过高&#xff0c;一看截图基本都是100%了&#xff0c;my god&#xff0c;这可是大问题&#xff0c;赶紧先看看。 让同事查看系统进程&#xff0c;发现是SQLServer的CPU占用比较高。首先想到的是不是报表生成的时候高&#xff0c;因为这块之前出现过问题&…

【WEEK11】 【DAY1】Employee Management System Part 2【English Version】

2024.5.6 Monday Continuing from 【WEEK10】 【DAY2】Employee Management System Part 1【English Version】 Contents 10.3. Page Internationalization10.3.1. Preparation10.3.2. Configuration File Writing10.3.2.1. Create an i18n (abbreviation for internationaliza…

iframe通信postMessage

iframe嵌入页面是实现微前端的方式之一。由于浏览器的跨域限制&#xff0c;iframe与父页面之间的通信变得不是那么容易。postMessage解决了这个问题。从广义上讲&#xff0c;一个窗口可以获得对另一个窗口的引用&#xff08;比如 targetWindow window.parent&#xff09;&…

增强for循环(for-each循环)

增强for循环&#xff08;for-each循环&#xff09;通常可以用于遍历实现Iterable接口的数据结构。Iterable接口定义了一个iterator()方法&#xff0c;该方法返回一个迭代器对象&#xff0c;用于遍历集合中的元素。 以下是一些常见的实现了Iterable接口的数据结构&#xff0c;可…

【大比武02】建设项目电子档案中的CA电子签名应用

关注我们 - 数字罗塞塔计划 - 应用CA电子签名取代手工签名和盖章是建设项目电子档案中可信存证的关键抓手。国内已有成熟应用的标杆性案例&#xff0c;如大湾区深中通道、广东惠清高速等。 然而&#xff0c;CA电子签名的必要性尚没有得到广泛认同&#xff0c;其应用过程中的问…

Charles抓包工具

Charles是一个HTTP代理工具&#xff0c;使开发人员能够查看客服端和服务器之间的所有HTTP/ HTTPS/SSL网络请求。 Charles是在PC环境下常用的网络抓包截取工具&#xff0c;在做移动开发时&#xff0c;我们为了调试客户端与服务端的网络通讯协议&#xff0c;常常需要截取网络请求…