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.hqwc.cn/news/597932.html

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

相关文章

文心一言指令词宝典之自媒体篇

作者&#xff1a;哈哥撩编程&#xff08;视频号、抖音、公众号同名&#xff09; 新星计划全栈领域优秀创作者博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 &#x1f3c6; 推荐专栏&#xff1a; &#x1f3c5;…

【算法】两数之和(暴力求解+哈希表)

本题来源---《两数之和》。 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里…

恶意代码的多种形式

恶意代码是一种程序代码有害的计算机代码或 web 脚本&#xff0c;其设计目的是创建系统漏洞&#xff0c;并借以造成后门、安全隐患、信息和数据盗窃、以及其他对文件和计算机系统的潜在破坏。为了防范恶意代码的攻击&#xff0c;我们可以采取一系列措施。德迅云安全-代码审计可…

深度学习理论基础(七)Transformer编码器和解码器

目录 前述&#xff1a; Transformer总体结构框图一、编码器encoder1. 编码器作用2. 编码器部分&#xff08;1&#xff09;单个编码器层代码&#xff08;2&#xff09;编码器总体代码 二、解码器decoder1. 解码器作用2. 解码器部分&#xff08;1&#xff09;单个解码器层代码&am…

纯CSS实现未读消息显示99+

在大佬那看到这个小技巧&#xff0c;我觉得这个功能点还挺常用&#xff0c;所以给大家分享下具体的实现。当未读消息数小于100的时候显示准确数值&#xff0c;大于99的时候显示99。 1. 实现效果 2. 组件封装 <template><span class"col"><sup :styl…

JavaEE 初阶篇-深入了解线程池(线程池创建、线程池如何处理任务)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 线程池概述 1.1 线程池的优点 1.2 不使用线程池的问题 1.3 线程池的工作原理图 1.4 如何创建线程池&#xff1f; 2.0 通过 ThreadPoolExecutor 类自定义创建线程…

基于springboot+vue的地方美食分享网站(全套资料)

一、系统架构 前端&#xff1a;vue | element-ui 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk8 | mysql | maven | node 二、代码及数据库 三、功能介绍 01. 用户端-登录 02. 用户端-首页 03. 用户端-外国美食 04. 用户端-中式美食 05. 用户端-热…

Centos7使用docker安装Jenkins(含pipeline脚本语句)

一、下载Jenkins docker pull jenkins/jenkins:lts 二、启动Jenkins docker run \-u root \--rm \-d \-p 8081:8080 \-p 50000:50000 \-v /root/docker/jenkins/var/jenkins_home:/var/jenkins_home \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr…

2024.4.4-day09-CSS 布局模型(标准流模型、浮动模型)

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业 2024.4.4-学习笔记1 CSS 布局模型1.1 标准流1.2 CSS 浮动1.3 去除塌陷 2…

记Postman参数化

因为需要在WEB页面上处理部分数据&#xff0c;手动操作太慢&#xff0c;所以考虑使用接口方式处理&#xff0c;因急于使用&#xff0c;用Python Request的方式&#xff0c;写代码也来得慢&#xff0c;故采用Postman加外部文件参数化方式来实现。 接口请求是Post方式&#xff0c…

光伏接口转接器配合光伏规约转换器实现发电用电信息采集支持接入各个型号逆变器

1.产品概述 DAQ-GP-485PIA光伏接口转接器&#xff08;以下简称转接器&#xff09;是我公司针对光伏发电领域国家电网公司最新需求设计的&#xff0c;光伏接口转接器是配合光伏规约转换器&#xff0c;实现逆变器发电、用电信息采集的设备。支持锦浪、古瑞瓦特、固德威、华为、奥…