PAT 1074 Reversing Linked List

在这里插入图片描述
在这里插入图片描述
题目的意思给出一个链表,让我们每隔K个进行一次反转,如果不足K个的,就不进行。
对于链表反转的题目,我第一时间想出来的是,原地进行逆置,不断的变化指针,但这样很麻烦,没有想出来,看题解后发现可以用数组+reverse的方法,进行每隔K个反转。
先把链表进行按顺序放到数组中,然后每隔K个对它们进行反转。
然后按照数组的顺序输出即可,当输出next指针域的时候,reverse的反转并不会改变每一个节点的next,我们可以选择输出下一个节点的address来代替next,因为节点在数组中是按顺序排列的。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <unordered_map>
#include <limits.h>
#include <queue>
using namespace std;
int startaddress;
int N;
int K; 
struct node
{int address;int data;int next;
}linklist[100005];
vector<node> ans;
bool cmp(node a,node b)
{if(a.data<b.data){return true;}else{return false;}
}int main()
{//ios::sync_with_stdio(0),cin.tie(0),cout.tie(cin>>startaddress>>N>>K;for(int i=1;i<=N;i++){int address;int data;int next;cin>>address>>data>>next;linklist[address].address=address;linklist[address].data=data;linklist[address].next=next;}while(startaddress!=-1){ans.push_back(linklist[startaddress]);startaddress=linklist[startaddress].next;}for(int i=0;i<=ans.size();i+=K){if(i+K<=ans.size())reverse(ans.begin()+i,ans.begin()+i+K);   }for(int i=0;i<ans.size();i++){if(i!=ans.size()-1)printf("%05d %d %05d\n",ans[i].address,ans[i].data,ans[i+1].address);elseprintf("%05d %d -1\n",ans[i].address,ans[i].data);}return 0;} 

总结:
PAT的题型中很多链表的题都是采用静态链表的存储方法,一般都是会涉及到排序等,并不涉及到指针的变换
例如:

PAT 1052 Linked List Sorting

而leetcode上的题目则一般都是对链表本身进行变换。
例如:

25. K 个一组翻转链表

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python学习DAY46打卡

DAY 46 通道注意力(SE注意力) 内容&#xff1a; 不同CNN层的特征图&#xff1a;不同通道的特征图什么是注意力&#xff1a;注意力家族&#xff0c;类似于动物园&#xff0c;都是不同的模块&#xff0c;好不好试了才知道。通道注意力&#xff1a;模型的定义和插入的位置通道注意…

猫头虎AI分享|字节开源了一款具备长期记忆能力的多模态智能体:M3-Agent 下载、安装、配置、部署教程

猫头虎AI分享&#xff5c;字节开源了一款具备长期记忆能力的多模态智能体&#xff1a;M3-Agent 大家好&#xff0c;我是猫头虎 &#x1f989;&#x1f42f;&#xff0c;今天给大家带来一个超硬核的开源 AI 项目分享&#xff1a;M3-Agent。这是一款由字节开源的、多模态智能体框…

应用缓存不止是Redis!——亿级流量系统架构设计系列

在当今互联网架构中&#xff0c;缓存技术犹如系统的"加速器"&#xff0c;通过将热点数据存储在高速介质中&#xff0c;显著降低数据库负载并提升响应速度。无论是CPU的L1/L2/L3缓存&#xff0c;还是分布式系统中的Redis集群&#xff0c;缓存无处不在。本文将深入探讨…

洛谷 P2834 纸币问题 3-普及-

题目背景 你是一个非常有钱的小朋友。 注意&#xff1a; 本题和《进阶篇》的对应题目&#xff0c;输入格式略有差异。 题目描述 你有 nnn 种面额互不相同的纸币&#xff0c;第 iii 种纸币的面额为 aia_iai​ 并且有无限张&#xff0c;现在你需要支付 www 的金额&#xff0c;请问…

C++常见面试题-5.数据结构

五、数据结构 5.1 线性数据结构数组和链表的区别&#xff1f;数组&#xff08;Array&#xff09;&#xff1a; 存储方式&#xff1a;连续的内存空间&#xff1b;访问方式&#xff1a;支持随机访问&#xff0c;通过索引直接访问元素&#xff0c;时间复杂度为O(1)&#xff1b;插入…

Node.js 在 Windows Server 上的离线部署方案

Node.js 在 Windows Server 上的离线部署方案 离线部署的核心是提前准备所有依赖资源&#xff08;避免在线下载&#xff09;&#xff0c;并通过本地配置完成服务搭建&#xff0c;整体分为「依赖准备」「环境配置」「项目部署」「服务注册」4个阶段。 一、提前准备离线资源&am…

18.web api 9

3.M端事件4.js插件

母猪姿态转换行为识别:计算机视觉与行为识别模型调优指南

> 在现代智能化养殖中,母猪姿态识别是健康监测的关键技术。本文将带你从0到1构建高精度母猪姿态识别系统,准确率可达95%以上! ## 一、为什么母猪姿态识别如此重要? 母猪的行为姿态是其健康状况的重要指标: - **站立姿态**:可能表示发情期或进食需求 - **侧卧姿态**:…

Unity进阶--C#补充知识点--【Unity跨平台的原理】Mono与IL2CPP

来源于唐老狮的视频教学&#xff0c;仅作记录和感悟记录&#xff0c;方便日后复习或者查找 一.跨平台基本原理 知识回顾&#xff1a; ①在之前我们已经知道了跨语言的原理是.Net体系下定义了这些语言需要遵守的工业标准CLI。因此实现了面向.Net的语言都可以被编译转化成统一规…

LeetCode:无重复字符的最长子串

目录 解题过程: 描述: 分析条件: 正确解题思路: 通过这道题可以学到什么: 解题过程: 描述: 3. 无重复字符的最长子串 提示 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为…

JUC读写锁

文章目录一、读写锁概述1.1 核心目标1.2 核心思想1.3 关键规则与保证1.4 核心组件二、使用示例2.1 采用独占锁的姿势读、写数据2.2 使用读写锁读、写数据2.3 锁降级 **&#xff08;Lock Downgrading&#xff09;**三、应用场景3.1 缓存系统【高频读、低频更新】3.2 配置中心【配…

docker compose再阿里云上无法使用的问题

最原始的Dokcerfile # 使用官方Python 3.6.8镜像 FROM python:3.6.8-slimWORKDIR /app# 复制依赖文件 COPY requirements.txt .RUN pip install --upgrade pip # 检查并安装依赖&#xff08;自动处理未安装的包&#xff09; RUN pip install --no-cache-dir -r requirements.tx…