单链表经典算法OJ题---力扣21

news2024/10/6 10:27:46

1.链接:. - 力扣(LeetCode)【点击即可跳转】

思路:创建新的空链表,遍历原链表。将节点值小的节点拿到新链表中进行尾插操作

遍历的结果只有两种情况:n1为空 或 n2为空

注意:链表为空的情况

代码实现:【下面有进行优化】

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2)
{
    //判空
    if(list1==NULL)
    {
        return list2;
    }
    if(list2==NULL)
    {
        return list1;
    }
  struct ListNode*n1=list1;
  struct ListNode*n2=list2;
  struct ListNode*newhead,*newtail;
   newhead=NULL,newtail=NULL;
  while(n1&&n2)
  {
     if(n1->val>=n2->val)//n2去尾插
     {
        //新链表为空
        if(newhead==NULL)
        {
            newhead=newtail=n2;
        }
        else//新链表不为空
        {
          newtail->next=n2;
          newtail=newtail->next;
        }
        n2=n2->next;
     }
     else   //n1去尾插
     {
        if(newhead==NULL)
        {
            newhead=newtail=n1;
        }
        else
        {
          newtail->next=n1;
          newtail=newtail->next;
        }
        n1=n1->next;
     }
     
  }//跳出循环有两种情况
  //1. n1为空  2.n2为空
  if(n1)
  {
    newtail->next=n1;
  }
  else
  {
    newtail->next=n2;
  }
  return newhead;
}

 在n1,n2去尾插过程中存在重复代码。如何优化?
重复的原因:新链表存在空链表和非空链表两种情况
解决思路:  让新链表不为空

//创建新链表 

ListNode* newhead,*newtail;

// newhead=newtail=NULL;

newhead=newtail=(ListNode*)malloc(sizeof(struct ListNode));

//此时链表不为空,头尾指针都指向了一个有效的地址(节点)

将原本的这样: 

变成这样:

最后:

优化后的版本实行起来,也可通过。

感谢观看,如果对你有帮助,点赞支持一下吧^^

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

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

相关文章

[力扣题解] 96. 不同的二叉搜索树

题目:96. 不同的二叉搜索树 思路 动态规划 f[i]:有i个结点有多少种二叉搜索树 状态转移方程: 以n3为例: 以1为头节点,左子树有0个结点,右子树有2个结点; 以2为头节点,左子树有1个…

单文件EXE绿色软件制作工具​Enigma Virtual Box​利用 EnigmaVB 打包 Qt 应用程序

功能描述:详细介绍如何利用 EnigmaVB 打包 Qt 应用程序,从 EnigmaVB 软件下载、安装,到如何使用,一步步教你走进 EnigmaVB 软件,最后还介绍了一款针对 Enigma Virtual Box 制作的单文件程序进行解包的工具 EnigmaVBUnp…

git-将本地项目上传到远程仓库

在gitee中新建一个远程仓库。 填写对应内容。 打开你想上传的文件夹,比如我想上传yuanshen 右击,打开git bash 输入git init初始化仓库 git init 添加项目所有文件 git add . 将添加的文件提交到本地仓库(提交说明必填) git …

61、内蒙古工业大学、内蒙科学技术研究院:CBAM-CNN用于SSVEP - BCI的分类方法[脑机二区还是好发的]

前言: 之前写过一篇对CBAM模型改进的博客,在CBAM中引入了ECANet结构,对CBAM中的CAM、SAM模块逐一改进,并提出ECA-CBAM单链双链结构,我的这个小的想法已经被一些同学实现了,并进行了有效的验证,…

3.运算符详解(java)

算术运算符 基本四则运算符:加减乘除模(、-、*、/、%) 注意: 都是二元运算符,使用时必须要有左右两个操作数 int / int 结果还是int类型,而且会向下取整 I.做除法和取模时 右操作数不能为0 II. %不仅可…

福派斯鲜肉狗粮大揭秘,狗狗吃了都说好!

狗粮哪个牌子好?我强烈推荐福派斯鲜肉狗粮!在众多狗粮品牌中,福派斯以其高品质、营养均衡以及独特的产品特点,受到了广大宠物主人的一致好评。 (1) 福派斯鲜肉狗粮的配方表透露出其对于原料选择的严谨和用心。高达75%的鲜肉含量&a…

探索美国动态IP池:技术赋能下的网络安全新篇章

在数字化飞速发展的今天,网络安全成为了各行各业关注的焦点。特别是在跨国业务中,如何保障数据的安全传输和合规性成为了企业面临的重要挑战。美国动态IP池作为一种新兴的网络技术,正逐渐走进人们的视野,为网络安全提供新的解决方…

学习古琴律学的好东西,帮您从基因里学古琴

《从基因里学懂古琴》是一本关于古琴律学的著作,作者通过基因的角度来解读古琴音乐的奥秘和美妙。古琴作为我国传统文化的瑰宝之一,具有悠久的历史和独特的音乐风格,但其律学原理一直以来都是一个谜。本书从基因的角度探讨了古琴音乐的律学特…

Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版

Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版 Office LTSC 2024 for Mac 请访问原文链接:Microsoft Office for Mac 2024 (Office 365) 16.84 Universal 预览版,查看最新版。原创作品,转载请保留出处。 作者主页&a…

【Spring Boot】 深入理解Spring Boot拦截器:自定义设计与实现全攻略

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring Boot】 深入理解Spring Boot拦截器:自定义设计与实现全攻略 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 SpringBoot统⼀功能处理一…

机器学习中表格数据预处理

目录 缺失值处理 在dataframe中进行填补 使用模型填补缺失值(随机森林) 异常值 数据无量纲化 中心化 数据归一化 数据标准化 缩放处理 转换数据类型 文本—>数值preprocessing.LabelEncoder:标签专用,能够将分类转换为…

计算机毕业设计 | SpringBoot健身房管理系统(附源码)

1,项目背景 随着人们生活水平的提高和健康意识的增强,健身行业逐渐兴起并迅速发展。而现代化的健身房管理系统已经成为健身房发展的必备工具之一。传统的健身房管理方式已经无法满足现代化健身房的需求,需要一种更加高效、智能、安全的管理系…

【Vue探索之旅】初识Vue

文章目录 前言 渐进式框架​ 入门案例 完结撒花 前言 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手&#x…

深入了解 MyBatis 插件:定制化你的持久层框架

序言 MyBatis 是一个流行的 Java 持久层框架,它提供了简单而强大的数据库访问功能。然而,有时候我们需要在 MyBatis 中添加一些自定义的功能或行为,来满足特定的需求。这时,MyBatis 插件就发挥了重要作用。本文将深入探讨 MyBati…

Cweek1

C语言学习 一.初识C语言 1.如何写C代码 ①创建工程 ②添加源文件&#xff1a;c文件&#xff1a;源文件&#xff0c;h文件&#xff1a;头文件 代码实例&#xff1a; main函数是程序的入口&#xff0c;有且仅有一个 在C语言中&#xff0c;#include <stdio.h> 是一个预…

Linux进程(一) -- 介绍进程

计算机的系统架构 用户部分 这是用户直接与计算机交互的部分&#xff0c;包括以下三种操作&#xff1a; 指令操作&#xff1a;用户通过命令行界面&#xff08;CLI&#xff09;输入指令来操作计算机。开发操作&#xff1a;开发人员编写和调试程序代码&#xff0c;与计算机系统…

4.分支与循环

逻辑控制分为三部分&#xff1a; 1.顺序结构---》顺序执行代码 2.分支结构---》if语句和switch语句 3.循环执行---》for语句 while语句 和do while语句 顺序结构比较简单&#xff0c;按照代码书写的顺序一行一行执行 分支结构&#xff08;if、switch语句&#xff09; 也就是…

网络安全快速入门(十二) linux的目录结构

我们前面已经了解了基础命令&#xff0c;今天我们来讲讲linux中的目录结构&#xff0c;我们在了解linux的目录结构之前&#xff0c;我们先与Windows做一个对比 12.1linux和windows的目录结构对比 在之前认识liunx的章节中&#xff0c;我们已经简单说明了linux和window的目录结构…

2024年蓝桥杯——复盘

1、握手问题 知识点&#xff1a;模拟 这道题很简单。但是不知道考试的时候有没有写错。一开始的43个人握手&#xff0c;仅需要两两握手&#xff0c;也就是从42个握手开始&#xff0c;而非43.很可惜。这道题没有拿稳这5分。也很有可能是这5分导致没有进决赛。 总结&#xff1a…

LLVM中期报告

1&#xff0e;主要开展的工作 研究对LLVM IR层面进行代码混淆&#xff0c;分析IR的指令 &#xff0c;并且实现混淆 从LLVM代码混淆的角度出发&#xff0c;函数之间的正常调用构成了待混淆程序的原始控制流&#xff0c;不同的基础代码块构成了一个个的函数&#xff0c;每个基础…