链表OJ题

题目一:206反转链表

题目要求:

思路分析:

代码实现:

struct ListNode* reverseList(struct ListNode* head){
//n1,n2反转指针  n3链接下一个结点的指针struct ListNode* n1,*n2,*n3;n1 = NULL;n2 = head;if(n2)//有可能head本身就是空指针n3 = n2->next;while(n2)//结束条件:n2==NULL{n2->next = n1;//反转链表n1 = n2;n2 = n3;if(n3)//坑2:n3到NULL之后要停止,因为不存在NULL->nextn3 = n3->next;}return n1;
}

题目二:27.移除元素

题目要求:

思路分析: 

 

代码实现:

int removeElement(int* nums, int numsSize, int val){int src = 0,dest = 0;while(src < numsSize){//等于val,src++,相当于删除//不等于val,把src位置的值覆盖到dest位置,src++,dest++if(nums[src] != val){nums[dest++]=nums[src++];// dest++;// src++:}else{src++;}}return dest;
}

 题目三:删除有序数组中的重复项

题目要求:

 

思路分析:

 

代码实现:

int removeDuplicates(int* nums, int numsSize){int src = 0;int dest = 0;while(src < numsSize){//相等src++if(nums[src] == nums[dest]){src++;}//不等-->将src赋给dest的下一个,src++,dest++else{nums[++dest] = nums[src++];}}return dest+1;
}

题目四:88.合并两个有序数组 

题目要求:

 思路分析:

 

代码实现:

//方法1
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {int end1 = m - 1;//nums1末位int end2 = n - 1;//nums2末位int end = m + n - 1;//整个数组的末位while (end1 >= 0 && end2 >= 0)//循环条件:两个都没有结束{//倒着插入,取大的覆盖if (nums1[end1] > nums2[end2]){nums1[end--] = nums1[end1--];}else{nums1[end--] = nums2[end2--];}}//nums2有剩余,把剩余元素赋给nums1while (end2 >= 0){nums1[end--] = nums2[end2--];}}//方法2
int cmp_int(const void* ptr1, const void* ptr2)
{return (*(int*)ptr1 - *(int*)ptr2);
}
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {//第二种方法:存到一起,再利用qsort函数//直接强行合并两个数组int i = m;int j = 0;while (j < n){nums1[i] = nums2[j];j++;i++;}//利用qsort函数排序qsort(nums1, m + n, 4, cmp_int);
}

 总结:

1.一个思路“双指针法”,即利用移动指针(src)和目标指针(dest),来完成对数组元素的操作,大家可以多多画图去理解这个过程;

2.“三指针法”求反转链表,两个指针进行反转,一个指针保证链表的“连接性”

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gin和gorm框架安装

理论上只要这两句命令 go get -u gorm.io/gorm go get -u github.com/gin-gonic/gin然而却出现了问题 貌似是代理问题&#xff0c;加上一条命令 go env -w GOPROXYhttps://goproxy.cn,direct 可以成功安装 安装gorm的数据库驱动程序 go get -u gorm.io/driver/mysql

按轨迹运行

文章目录 import math import timeimport numpy as np import matplotlib.pyplot as pltdef plot_arrow(x, y, yaw, length=5, width=1):dx = length * math.cos(yaw)dy = length * math.sin(yaw)plt.arrow(x, y, dx, dy, head_length=width, head_width=width)plt.plot([x, x …

Mybatis-plus动态条件查询QueryWrapper的使用

Mybatis-plus动态条件查询QueryWrapper的使用 一&#xff1a;queryWrapper介绍 queryWrapper是mybatis plus中实现查询的对象封装操作类&#xff0c;可以封装sql对象&#xff0c;包括where条件&#xff0c;order by排序&#xff0c;select哪些字段等等&#xff0c;他的层级关…

任务14、无缝衔接,MidJourney瓷砖(Tile)参数制作精良贴图

14.1 任务概述 在这个实验任务中,我们将深入探索《Midjourney Ai绘画》中的Tile技术和其在艺术创作中的具有挑战性的应用。此任务将通过理论学习与实践操作相结合的方式,让参与者更好地理解Tile的核心概念,熟练掌握如何在Midjourney平台上使用Tile参数,并实际运用到AI绘画…

spring — Spring Security 5.7与6.0差异性对比

1. spring security Spring Security 是一个提供身份验证、授权和针对常见攻击保护的框架。 凭借对保护命令式和反应式应用程序的一流支持&#xff0c;它成为基于Spring的标准安全框架。 Spring Security 在最近几个版本中配置的写法都有一些变化&#xff0c;很多常见的方法都…

Intellij IDEA运行报Command line is too long的解决办法

想哭&#xff0c;vue前端运行起来&#xff0c;对应的后端也得起服务。 后端出的这个bug&#xff0c;下面的博客写的第二种方法&#xff0c;完整截图是下面这个。 ​​​​​​​​​​​​​​​​​​​​Intellij IDEA运行报Command line is too long的解决办法 - 知乎 (zh…

集睿致远/CS5269设计Typec转HDMI带PD100w快充方案

集睿致远ASL推出的CS5269AN是一款高性能Typec/DP1.4转HDMI 4k_60Hz带PD100w快充转换器方案芯片 DP接口包括4条主通道、辅助通道和HPD信号。支持5.4Gbps(HBR2&#xff09;的数据速率。DP接收机兼容HDCP1.4和HDCP2.3内容保护方案具有嵌入式密钥&#xff0c;用于数字音视频内容的…

【Spring Cloud 四】Ribbon负载均衡

Ribbon负载均衡 系列文章目录背景一、什么是Ribbon二、为什么要有Ribbon三、使用Ribbon进行负载均衡服务提供者A代码pom文件yml配置文件启动类controller 服务提供者Bpom文件yml配置文件启动类controller 服务消费者pom文件yml文件启动类controller 运行测试 四、Ribbon的负载均…

数据结构--单链表OJ题

上文回顾---单链表 这章将来做一些链表的相关题目。 目录 1.移除链表元素 2.反转链表 3.链表的中间结点 4.链表中的倒数第k个结点 5.合并两个有序链表 6.链表分割 7.链表的回文结构 8.相交链表 9.环形链表 ​编辑 10.环形链表II ​编辑 ​编辑 1.移除链表元素 思…

后端进阶之路——浅谈Spring Security用户、角色、权限和访问规则(三)

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★前端炫酷代码分享 ★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ 解决算法&#xff0c;一个专栏就够了★ ★ 架…

项目出bug,找不到bug,如何拉回之前的版本

1.用gitee如何拉取代码 本文为转载于「闪耀太阳a」的原创文章原文链接&#xff1a;https://blog.csdn.net/Gufang617/article/details/119929145 怎么从gitee上拉取代码 1.首先找到gitee上想要拉取得代码URL地址 点击复制这里的https地址 1 ps:&#xff08;另外一种方法&…

Source Insight和Keil中文乱码

1、问题原因 由于Source Insight和Keil中的中文编码方式的不同&#xff0c;导致Keil中添加的中文注释在Source Insight中乱码&#xff1b;在Source Insight中添加的中文注释在Keil中乱码。所以需要统一两者的编码方式。 Source Insight默认编码方式为UTF-8&#xff0c;Keil中一…