leetcode.707. 设计链表

题目

题意:

在链表类中实现这些功能:

get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。
addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。
addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。
addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index 大于链表长度,则不会插入节点。如果index小于0,则在头部插入节点。
deleteAtIndex(index):如果索引 index 有效,则删除链表中的第 index 个节点。

思路

  • 创建成员变量size和head,在构造函数中初始化size和head。在增删节点的操作中维护变量size
  • 注意curr初始的指向位置和遍历循环的终止条件
    在这里插入图片描述

实现

// package com.dj.mall.algorithm.node;//单链表
class ListNode {int val;ListNode next;ListNode(){}ListNode(int val) {this.val=val;}
}class MyLinkedList {//链表长度int size;//虚拟头节点ListNode head;public MyLinkedList() {size = 0;head = new ListNode(0);}public int get(int index) {if(size == 0 || index < 0 || index > size - 1){return -1;}ListNode curr = head;//index + 1的元素while(index >= 0){curr = curr.next;index--;}return curr.val;}public void addAtHead(int val) {ListNode newNode = new ListNode(val);ListNode temp = head.next;head.next = newNode;newNode.next = temp;size ++;}public void addAtTail(int val) {//遍历到最后一个节点ListNode curr = head;while(curr.next != null){curr = curr.next;}curr.next = new ListNode(val);size ++;}public void addAtIndex(int index, int val) {if(index < 0 || index > size){return;}ListNode curr = head;//将curr遍历到index-1的节点while(index  > 0){curr = curr.next;index --;}ListNode newNode = new ListNode(val);ListNode temp = curr.next;curr.next = newNode;newNode.next = temp;size++;}public void deleteAtIndex(int index) {if(index < 0 || index > size - 1){return;}ListNode curr  =  head;while(index > 0 ){curr = curr.next;index --;}curr.next = curr.next.next;size --;}// public static void main(String[] args) {//      MyLinkedList myLinkedList = new MyLinkedList();//      myLinkedList.addAtTail(7);//      myLinkedList.get(0);//      myLinkedList.addAtHead(2);//      myLinkedList.addAtHead(1);//      myLinkedList.addAtIndex(3,0);//      myLinkedList.deleteAtIndex(2);//      myLinkedList.addAtHead(6);//      myLinkedList.addAtTail(4);//      myLinkedList.addAtHead(4);//      myLinkedList.get(4);//      myLinkedList.addAtIndex(5,0);//      myLinkedList.addAtHead(6);// }}

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

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

相关文章

CDN撞上云防护:技术视角下的差异与协同作用

引言 随着互联网业务全球化和服务需求的不断增长&#xff0c;内容分发网络&#xff08;CDN&#xff09;和云防护已成为现代企业保障网站性能、安全性和可靠性的关键工具。尽管两者在提升用户体验及确保服务连续性方面都有显著作用&#xff0c;但它们各自的核心技术和应用场景有…

2024年选择云渲染平台必须注意这5点!看完你就懂了

云渲染平台这么多&#xff0c;你是不是正在为选择哪一家而困惑&#xff1f; 随着云渲染技术的进一步发展&#xff0c;市面上的云渲染平台也越来越多&#xff0c;其中鱼龙混杂的也不在少数。对于设计师和设计公司来说&#xff0c;如何选择一个可靠且适合自己的云渲染平台成为一…

Godot 4 教程《勇者传说》依赖注入 学习笔记(0):环境配置

文章目录 前言相关地址环境配置初始化环境配置文件夹结构代码结构代码运行 资源文件导入像素风格窗口环境设置背景设置,Tileap使用自动TileMap 人物场景动画节点添加站立节点添加移动动画添加 通过依赖注入获取Godot的全局属性项目声明 当前项目逻辑讲解角色下降添加代码位置问…

CTF之GET和POST

学过php都知道就一个简单传参&#xff0c;构造payload:?whatflag得到 flag{3121064b1e9e27280f9f709144222429} 下面是POST那题 使用firefox浏览器的插件Hackbar勾选POST传入whatflag flag{828a91acc006990d74b0cb0c2f62b8d8}

论文阅读AI工具链

文献检索 可以利用智谱清言来生成合适的文献检索式&#xff0c;并根据需要不断调整。 谷歌学术 在Google Scholar中进行检索时&#xff0c;您可以使用类似的逻辑来构建您的搜索式&#xff0c;但是语法会有所不同。Google Scholar的搜索框接受普通的文本搜索&#xff0c;但是…

分组循环

子数组类问题 子数组&#xff1a; 子数组是指由原数组中连续的一段或多段元素组成的数组。如果有一个数组 A&#xff0c;那么它的子数组 B 是 A 中从某个起始位置 i 到终止位置 j&#xff08;满足 0 < i < j < A.length&#xff09;的所有元素组成的数组&#xff0c;即…

力扣热题100_链表_138_随机链表的复制

文章目录 题目链接解题思路解题代码 题目链接 138. 随机链表的复制 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&a…

数据库同步方案Sqlserver

数据库同步方案探究 随着信息技术的迅猛发展&#xff0c;数据库在各个领域的应用日益广泛。而在分布式系统、云计算、大数据等场景下&#xff0c;数据库同步成为了一个至关重要的问题。数据库同步不仅关乎数据的完整性和一致性&#xff0c;还直接影响到系统的稳定性和性能。因…

乐健体育刷分----AI运动的站姿风车

一.前情提要 1.本文仅作学习参考不得用于其他不当途径&#xff0c;若有问题后果自负 二.操作 1.打开乐健体育 2.点击AI运动&#xff0c;找到站姿风车 3.摄像头对准以下图片&#xff0c;拖动图片或保持不动均可 &#xff08;站姿风车2组及以上效果更佳&#xff09;

完成产品兼容互认,用KubeBlocks可实现OceanBase集群管理

本文转载自云猿生聊技术&#xff08;CloudNativeDataTech&#xff09; 前言 KubeBlocks&#xff08;简称 KB&#xff09;在最新发布的0.7版本中&#xff0c;通过组件扩展&#xff08;Addon&#xff09;的形式新增了对OceanBase的支持功能。这一更新为企业级和非企业级用户提供…

计算机视觉入门:开启图像理解之旅

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

记某客户的一次无缝数据迁移

背景 客户需要将 Elasticsearch 集群无缝迁移到移动云&#xff0c;迁移过程要保证业务的最小停机时间。 实现方式 通过采用成熟的 INFINI 网关来进行数据的双写&#xff0c;在集群的切换恢复过程中来记录数据变更&#xff0c;待全量数据恢复之后再追平后面增量数据&#xff…

数据结构__顺序表和单链表

顺序表的改进 问题&#xff1a; 1. 中间/头部的插入删除&#xff0c;时间复杂度为O(N) 2. 增容需要申请新空间&#xff0c;拷贝数据&#xff0c;释放旧空间。会有不小的消耗。 3. 增容一般是呈2倍的增长&#xff0c;势必会有一定的空间浪费。例如当前容量为100&#xff0c;满了…

基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析教程

原文链接&#xff1a;基于R语言地理加权回归、主成份分析、判别分析等空间异质性数据分析教程https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247600473&idx6&sn431e9408a42862d29fe4f4ef7703595b&chksmfa8208becdf581a820d9479d2aa61b88e96612c4ab72b0…

蓝桥-回文日期

目录 题目链接 ​编辑 ​编辑 什么是回文数&#xff1f;​编辑 代码 100%过 90%暴力 优化写的暴力代码 题目链接 2.回文日期 - 蓝桥云课 (lanqiao.cn) 什么是回文数&#xff1f; 代码 100%过 把那个90%的代码的循环限制条件去掉就行了&#xff0c;题目只是限制了N…

【前沿模型解析】潜在扩散模型 2-1 | 手撕感知图像压缩 基础块ResNet块

文章目录 1 残差结构回顾2 LDM结构中的残差结构设计2.1 组归一化GroupNorm层2.2 激活函数层2.3 卷积层2.4 dropout层 3 代码实现 1 残差结构回顾 残差结构应该是非常重要的基础块之一了&#xff0c;你肯定会在各种各样的网络模型结构里看到残差结构&#xff0c;他是非常强大的…

Vector Laboratories的凝集素--莲藕凝集素(Lotus Tetragonolobus Lectin)

莲藕凝集素&#xff08;lotustetragonolobus lectin&#xff09;是一个密切相关的糖蛋白家族&#xff0c;对含α-linked L-fucose具有相似的特异性。虽然莲藕凝集素的许多结合特性与荆豆凝集素I相似&#xff0c;但这些岩藻糖特异性凝集素之间的结合亲和力和某些寡糖特异性明显不…

学习大数据之JDBC(使用JAVA语句进行SQL操作)(3)

文章目录 DBUtils工具包准备工作DBUtils的介绍QueryRunner空参的QueryRunner的介绍以及使用有参QueryRunner的介绍以及使用 ResultSetHandler结果集BeanHandler<T>BeanListHandler<T>ScalarHanderColumnListHander 事务事务事务_转账分析图实现转账&#xff08;不加…

Cypress自动化测试开发指南!

cypress是基于JavaScript语言为编写语言的自动化测试开发工具&#xff0c;配合使用cucumber测试开发框架&#xff0c;以node.js为服务进程&#xff0c;可以简单的帮助测试人员完成需要人工手点的所有页面人机交互操作&#xff0c;可以模拟键盘和鼠标输入&#xff0c;快捷完成ca…

【XCPC笔记】2023 (ICPC) Jiangxi Provincial Contest——ABCHIJKL 做题记录

赛后gym练习及补题&#xff0c;gym链接&#xff1a;2023 (ICPC) Jiangxi Provincial Contest – Official Contest 补题顺序 L [Zhang Fei Threading Needles - Thick with Fine](https://codeforces.com/gym/104385/problem/L)题面解读参考代码 A [Drill Wood to Make Fire](h…