链表题牛客

  1. 链表反转
ListNode* ReverseList(ListNode* head){ListNode* a = NULL;ListNode* b = head;while(b!=NULL){ListNode* c=b->next;b->next=a;a=b;b=c;}return a;
}
  1. 链表内指定区间反转
ListNode* reverseBetween(ListNode* head, int m, int n) {ListNode* res = new ListNode(-1);res->next = head;ListNode* pre = res;ListNode* cur = head;for(int i = 1; i < m; i++){pre = cur;cur = cur->next;}for(int i = m; i < n; i++){ListNode* temp = cur->next;cur->next = temp->next;temp->next = pre->next;pre->next = temp;}return res->next;}
  1. 合并两个有序的链表
ListNode* Merge(ListNode* pHead1, ListNode* pHead2) {if(pHead1 ==NULL){return pHead2;}if(pHead2 ==NULL){return pHead1;}ListNode* head =new ListNode(0);ListNode* cur=head;while(pHead1&&pHead2){if(pHead1->val<=pHead2->val){cur->next=pHead1;pHead1=pHead1->next;}else{cur->next=pHead2;pHead2=pHead2->next;}cur=cur->next;}if(pHead1!=NULL){cur->next=pHead1;}else cur->next=pHead2;return head->next;}
  1. 合并k个已排序的链表
/*** struct ListNode {*	int val;*	struct ListNode *next;*	ListNode(int x) : val(x), next(nullptr) {}* };*/
class Solution {
public:ListNode* mergeKLists(vector<ListNode*>& lists) {vector<int> v;for(int i=0;i<lists.size();i++){ListNode* temp=lists[i];while(temp){v.push_back(temp->val);temp=temp->next;}}sort(v.begin(),v.end());ListNode* head=new ListNode(0);ListNode* cur=head;for(int i=0;i<v.size();i++){ListNode* temp=new ListNode(v[i]);cur->next=temp;cur=temp;}return head->next;}
};
  1. 判断链表中是否有环
bool hasCycle(ListNode *head) {//先判断链表为空的情况if(head==NULL)return false;//快慢双指针ListNode* fast = head;ListNode* slow = head;//如果没环快指针会先到链表尾while(fast != NULL&&fast->next!=NULL){fast = fast->next->next;slow = slow->next;if(fast==slow)return true;}return false;}
  1. 链表中环的入口地址
ListNode* EntryNodeOfLoop(ListNode* head){int N[10100]={0};while(head){if(!N[head->val])N[head->val]=1;else return head;head=head->next;}return NULL;}
  1. 链表倒数第k个节点
ListNode* FindKthToTail(ListNode* pHead, int k) {int len=0;auto p=pHead;while(p){p=p->next;len++;}if(len<k)return NULL;p=pHead;for(int i=1;i<len-k+1;i++){p=p->next;}return p;}

8.两个链表的第一个公共节点

ListNode* FindFirstCommonNode( ListNode* pHead1, ListNode* pHead2) {auto p=pHead1,q=pHead2;while(p!=q){if(p!=NULL) p=p->next;else p=pHead2;if(q!=NULL) q=q->next;else q=pHead1;}return p;}

9.单链表的排序

ListNode* sortInList(ListNode* head) {vector<int> v;ListNode* p=head;while(p!=NULL){v.push_back(p->val);p=p->next;}p=head;sort(v.begin(),v.end());for(int i=0;i<v.size();i++){p->val=v[i];p=p->next;}return head;}
  1. 判断一个链表是否为回文结构
bool isPail(ListNode* head){vector<int> nums;while(head){nums.push_back(head->val);head=head->next;}vector<int> temp=nums;reverse(temp.begin(),temp.end());for(int i=0;i<nums.size();i++){if(nums[i]!=temp[i]){return false;}}return true;}
  1. 链表的奇偶重排
ListNode* oddEvenList(ListNode* head) {if(head==NULL)return head;ListNode* even = head->next;ListNode* odd = head;ListNode* evenhead = even;while(even!=NULL&&even->next!=NULL){odd->next=even->next;odd=odd->next;even->next=odd->next;even=even->next;}odd->next=evenhead;return head;}
  1. 有序链表中删除有序链表中重复的元素
ListNode* deleteDuplicates(ListNode* head) {//空链表if(head == NULL) return NULL;//遍历指针ListNode* cur = head; //指针当前和下一位不为空while(cur != NULL && cur->next != NULL){ //如果当前与下一位相等则忽略下一位if(cur->val == cur->next->val) cur->next = cur->next->next;//否则指针正常遍历else cur = cur->next;}return head;}
  1. 有序链表中删掉出现不止一次的元素
    ListNode* deleteDuplicates(ListNode* head) {if(head==NULL){return NULL;}unordered_map<int,int> mp;ListNode* p=head;while(p!=NULL){mp[p->val]++;p=p->next;}ListNode* res = new ListNode(0);res->next=head;p=res;while(p->next!=NULL){if(mp[p->next->val]!=1){p->next=p->next->next;}else p=p->next;}return res->next;}

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

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

相关文章

python和Vue开发的RBAC用户角色权限管理系统

后端框架&#xff1a;python的FastAPI作为后端服务和python-jose作为JWT认证 前端框架&#xff1a;Vue3构建页面和Vue Router作为路由管理&#xff0c;Pinia作为数据存储&#xff0c;Vite作为打包工具 可以实现菜单控制和路由控制&#xff0c;页面里面有按钮权限控制&#xf…

【R包开发:包的组件】 第4章 包的元数据

DESCRIPTION(描述文件) 的作用是存储包中重要的元数据。当第一次开发包时, 你会 使用这个文件记录包运行时所需要的包。然而,随着时间的流逝,当开始与他人分享包 时,元数据文件变得越来越重要,因为它指定了谁可以使用它(许可证),以及如果包有 什么问题时需要和谁(你!)联系…

客户端测试 可测性改进-学习记录

客户端测试面临的挑战 难点&#xff1a; 业务复杂&#xff0c;产品多&#xff0c;技术栈多样 测试过程的痛点&#xff1a; 配置-》执行-〉检查-》结果 手工测试前置配置操作极其繁琐&#xff1a;安装测试包-〉进入debug页面-》设置h-〉设置AB test-》锁定rn包-〉进入业务页…

java解决跨域问题

浏览器js在访问服务器中的资源时&#xff0c;会出现同一页面或者不同域名(协议&#xff0c;IP&#xff0c;端口)不可访问 例如:file://d://test.html页面(file协议)中通过ajax访问服务器api.test.com的接口(http协议)&#xff0c;由于协议不同&#xff0c;此时会出现浏览器访问…

CVE-2020-15778 OpenSSH命令注入漏洞

预备知识 漏洞描述 OpenSSH8.3p1及之前版本中scp的scp.c文件存在操作系统命令注入漏洞。该漏洞即使在禁用ssh登录的情况下,但是允许使用scp传文件,而且远程服务器允许使用反引号(`)。攻击者可利用scp复制文件到远程服务器时,执行带有payload的scp命令,从而在后续利用中ge…

相对全面的四足机器人驱动规划MATLAB和Simulink实现方式(足端摆线规划,Hopf-CPG,Kimura-CPG)

许久没更新四足机器人相关的博客文章&#xff0c;由于去年一整年都在干各种各样的~活&#xff0c;终于把硕士毕业论文给写好&#xff0c;才有点时间更新自己的所学和感悟。步态规划和足端规划只是为了在运动学层面获取四足机器人各关节的期望角位移和速度信号&#xff0c;再由底…

Glide报错:FileNotFoundException: XX open failed: EACCES (Permission denied)

问题描述&#xff1a; targetVersion:33&#xff0c;Manifest已经申请了READ_MEDIA_IMAGES&#xff0c;WRITE_EXTERNA权限&#xff0c;代码里也动态申请了权限。但是通过系统相册选择图片后&#xff0c;将uri转为path之后&#xff0c;用glide加载path一直报这个错误。如果用gl…

JavaScript语法和数据类型

基础 JavaScript 借鉴了 Java 的大部分语法&#xff0c;但同时也受到 Awk、Perl 和 Python 的影响。 JavaScript 是区分大小写的&#xff0c;并使用 Unicode 字符集。举个例子&#xff0c;可以将单词 Frh&#xff08;在德语中意思是“早”&#xff09;用作变量名。 var Frh …

Nacos部署(二)Linux部署Nacos2.3.x集群环境

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; Nacos部署&#xff08;二&#xff09;Linux部署Nacos2.3.x集群环境 ⏱️…

Xshell连接虚拟机非常慢

问题&#xff1a; 打开虚拟机连接时发现过了几分钟依然卡着在&#xff0c;但是主机可以ping通虚拟机&#xff0c;虚拟机也可以ping通主机感觉很奇怪&#xff0c;查询后得知需要修改ssh设置 打开配置 vim /etc/ssh/sshd_config 修改配置 找到 UseDNS&#xff0c;去掉前面的#号…

React中 类组件 与 函数组件 的区别

类组件 与 函数组件 的区别 1. 类组件2. 函数组件HookuseStateuseEffectuseCallbackuseMemouseContextuseRef 3. 函数组件与类组件的区别3.1 表面差异3.2 最大不同原因 1. 类组件 在React中&#xff0c;类组件就是基于ES6语法&#xff0c;通过继承 React.component 得到的组件…

面试八股文之JAVA基础

JAVA基础 DNS、CDN&#xff1f;如何实现对象克隆?父子类静态代码块, 非静态代码块, 构造方法执行顺序?String s new String("abc") 创建了几个对象, 分别放到哪里?OSI网络模型七层&#xff1f;应用层协议&#xff1f;http协议和https协议区别&#xff1f;传输层协…

蓝桥杯小白月赛3.23

题目描述&#xff1a; AC代码&#xff1a; #include <iostream> #include<cstring> #include<algorithm>using namespace std;const int N 2e510; string str[N]; //写上&会速度更快一些 bool cmp(const string &s1,const string &s2) {//例…

【Python】 Python脚本实现某平台视频流下载

亲爱的玛丽 我会想念着你 我是多么的讨厌分离 加油站旁的海鸥 机场路上的松柏 挥挥手眼泪就落下来 我多想和那些光阴永远住下来 我不能 我不能 &#x1f3b5; 赵雷《玛丽》 在视频内容的分发上&#xff0c;m3u8格式的视频流越来越常见。它将视频切分成多个…

苹果App Store上架工具介绍

文章目录 摘要引言正文1. Xcode2. [appuploder](https://www.applicationloader.net/)3. [克魔助手](https://keymob.com/) 4.[ipa guard](https://www.ipaguard.com/)总结参考资料 摘要 苹果App Store作为iOS应用程序的主要分发渠道&#xff0c;上架应用程序需要遵守规定和通…

华为数通方向HCIP-DataCom H12-821题库(多选题:201-220)

第201题 以下关于BGP中Orginator ID属性的描述,正确的是哪些项? A、Originator ID属于公认任意属性 B、当其他BGP Speaker接收到这条路由的时候,将比较收到的0nginator ID和本地的Router ID,如果两个ID相同BGP Speaker会忽略掉这条路由,不做处理 C、当一条路由第一次被RR…

输入与输出

输入(Scanner类) Scanner是java5的新特性&#xff0c;在java.util包里&#xff0c;可以完成用户输入。步骤&#xff1a; 导入java.util包&#xff1b;构造Scanner对象&#xff0c;参数为u标准输入流System.in&#xff1b;使用next()方法系列接收数据 nextBoolean()接收一个布…

后端基础篇- 社区 IDEA 手动 Maven 创建 SpringBoot 项目、Maven 安装与配置环境变量、IDEA 集成 Maven

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 Maven 安装与配置环境变量 1.1 下载并解压安装包 1.2 配置本地仓库 1.3 配置阿里云私服 1.4 配置环境变量 2.0 IDEA 集成 Maven 2.1 首先创建一个新项目 2.2 开始…

电商系列之满减

> 插&#xff1a;AI时代&#xff0c;程序员或多或少要了解些人工智能&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家…

【4月】组队打卡《山有木Python特征工程极简入门》

活动名称 CDA Club 第2期《山有木兮Python数据分析极简入门》组队打卡 活动介绍 本次打卡活动由CDA俱乐部旗下学术部主办。目的是通过数据分析科普内容&#xff0c;为数据分析爱好者提供学习和交流的机会。方便大家利用碎片化时间在线学习&#xff0c;以组队打卡的形式提升学…