[leetcode] 707 设计链表

707. 设L计链表

中等

902

相关企业

你可以选择使用单链表或者双链表,设计并实现自己的链表。

单链表中的节点应该具备两个属性:val 和 next 。val 是当前节点的值,next 是指向下一个节点的指针/引用。

如果是双向链表,则还需要属性 prev 以指示链表中的上一个节点。假设链表中的所有节点下标从 0 开始。

实现 MyLinkedList 类:

  • MyLinkedList() 初始化 MyLinkedList 对象。
  • int get(int index) 获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1 。
  • void addAtHead(int val) 将一个值为 val 的节点插入到链表中第一个元素之前。在插入完成后,新节点会成为链表的第一个节点。
  • void addAtTail(int val) 将一个值为 val 的节点追加到链表中作为链表的最后一个元素。
  • void addAtIndex(int index, int val) 将一个值为 val 的节点插入到链表中下标为 index 的节点之前。如果 index 等于链表的长度,那么该节点会被追加到链表的末尾。如果 index 比长度更大,该节点将 不会插入 到链表中。
  • void deleteAtIndex(int index) 如果下标有效,则删除链表中下标为 index 的节点。

示例:

输入
["MyLinkedList", "addAtHead", "addAtTail", "addAtIndex", "get", "deleteAtIndex", "get"]
[[], [1], [3], [1, 2], [1], [1], [1]]
输出
[null, null, null, null, 2, null, 3]解释
MyLinkedList myLinkedList = new MyLinkedList();
myLinkedList.addAtHead(1);
myLinkedList.addAtTail(3);
myLinkedList.addAtIndex(1, 2);    // 链表变为 1->2->3
myLinkedList.get(1);              // 返回 2
myLinkedList.deleteAtIndex(1);    // 现在,链表变为 1->3
myLinkedList.get(1);              // 返回 3
struct linkednode{int val;linkednode* next;linkednode(int val): val(val),next(NULL){}
};
class MyLinkedList {
private:linkednode * _dummynode;int _size;
public:MyLinkedList() {_dummynode = new linkednode(0);_size = 0;}int get(int index) {if ((index+1)>_size)return -1;linkednode * cur = _dummynode;while (index--){cur = cur->next;}return cur->next->val;}void addAtHead(int val) {linkednode * newnode = new linkednode(val);newnode->next = _dummynode->next;_dummynode->next = newnode;_size++;}void addAtTail(int val) {linkednode * newnode = new linkednode(val);linkednode * cur = _dummynode;while (cur->next != NULL){cur = cur->next;}cur->next = newnode;_size++;}void addAtIndex(int index, int val) {if (index>_size)return;linkednode * newnode =  new linkednode(val);linkednode * cur = _dummynode;while (index--){cur = cur->next;}newnode->next = cur->next;cur->next = newnode;_size++;}void deleteAtIndex(int index) {if ((index+1)>_size)return ;linkednode * cur = _dummynode;while (index--){cur = cur->next;}linkednode * deletenode = cur->next;cur->next = cur->next->next;delete deletenode;_size--;}void printlinkedlist(){linkednode * cur = _dummynode;while (cur->next != NULL){cur = cur->next;cout<<cur->val<<"->";}}
};

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

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

相关文章

如何批量修改图片名为不同名称

如何批量修改图片名为不同名称&#xff1f;当今社会&#xff0c;因为人们都养成了随手拍照的习惯&#xff0c;所以拥有上千上万张照片的相册已经司空见惯不足为奇。然而&#xff0c;我们在保存这些照片时往往都会碰到一个大难题——电脑中的图片名称千奇百怪&#xff0c;让整个…

C++并发多线程--std::async、std::packaged_task和std::promise的使用

目录 1--std::async的使用 2--std::packaged_task的使用 3--std::promise的使用 1--std::async的使用 std::async用于启动一个异步任务&#xff0c;并返回一个std::future对象&#xff1b;std::future对象里含有异步任务线程入口函数的结果&#xff1b; std::launch::deferr…

完美解决微信小程序使用复选框van-checkbox无法选中

由于小程序使用了vant-ui框架&#xff0c;导致checkbox点击无法选中问题 <van-checkbox value"{{ checked }}" shape"square"><view class"check-content"><view class"checktext">我已阅读并同意>《用户协议》…

opencv-目标追踪

import argparse import time import cv2 import numpy as np# 配置参数 ap argparse.ArgumentParser() ap.add_argument("-v", "--video", typestr,help"path to input video file") ap.add_argument("-t", "--tracker", …

第1天----验证一个字符串是否是另一个字符串的子串

本文我们将学习如何去验证一个字符串是否是另一个字符串的子串。 一、小试牛刀&#xff1a; 题目描述 输入两个字符串&#xff0c;验证其中一个串是否为另一个串的子串。 输入格式 两行&#xff0c;每行一个字符串。 输出格式 若第一个串 s 1 是第二个串 s 2 的子串&#xff0c…

java Spring Boot properties多环境配置拆分文件管理

上文 java Spring Boot yml多环境拆分文件管理优化 我们用yml 做了一个多环境配置文件的拆分管理 我们将 application.yml 改为 application.properties 参考代码如下 spring.profiles.activedev我们知道 yml 是用 : 来区分高低基本 而 properties是直接通过 . 来表达 其他基本…

使用svd 分解的方法对神经网络模型进行压缩(能不能压缩要看秩的大小)

参考和理论 压缩原理代码 import torch import numpy as np torch.manual_seed(0)# ------------------------------------ # n:输入数据维度 # m:输出数据维度 # ------------------------------------ n = 12 m = 10# ------------------------------------ # 随机初始化权…

树形组件浅知

别人写好的轮子&#xff0c;会用即可 首先&#xff0c;需要安装依赖&#xff0c;npm install --save riophae/vue-treeselect 如果使用npm 不行 那么就使用 yarn add --save riophae/vue-treeselect 然后在使用的地方引入即可 // import the componentimport Treeselect from…

微信ipad协议8.0.40 加好友功能

友情链接 geweapi.com 点击即可访问&#xff01; 好友请求验证 小提示&#xff1a; v_3 v_4 可以参考 搜索接口 请求URL&#xff1a; http://域名地址/api/contacts/verifyuser 请求方式&#xff1a; POST 请求头&#xff1a; Content-Type&#xff1a;application/js…

SpringCloud实用篇7——深入elasticsearch

目录 1 数据聚合1.1 聚合的种类1.2 DSL实现聚合1.2.1 Bucket聚合语法1.2.2 聚合结果排序1.2.3 限定聚合范围1.2.4 Metric聚合语法1.2.5.小结 1.3 RestAPI实现聚合1.3.1 API语法1.3.2 业务需求1.3.3 业务实现 2 自动补全2.1 拼音分词器2.2 自定义分词器2.3 自动补全查询2.4 实现…

POJ 1995 Raising Modulo Numbers 快速幂

一、总结 我一开始担心溢出&#xff0c;开了一个无符号的long long&#xff0c;但是直接超时&#xff0c;后来一看它的mod不是很大&#xff0c;于是改成int&#xff0c;直接过了。 二、代码 #include <iostream> using namespace std; int H, Z; int M; int mulMod(in…

P1217 [USACO1.5] 回文质数 Prime Palindromes

P1217 [USACO1.5] 回文质数 Prime Palindromes - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) # [USACO1.5] 回文质数 Prime Palindromes ## 题目描述 因为 $151$ 既是一个质数又是一个回文数&#xff08;从左到右和从右到左是看一样的&#xff09;&#xff0c;所以 $151$ …

Python基础教程:私有变量的访问和赋值教程

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 首先我们这里先描述下&#xff1a; Python中&#xff0c;变量名类似__x__的&#xff0c;以双下划线开头&#xff0c;并且以双下划线结尾的&#xff0c;是特殊变量&#xff0c;特殊变量是可以直接访问的&#xff08;比如 doc, __i…

SpringBoot3集成ElasticSearch

标签&#xff1a;ElasticSearch8.Kibana8&#xff1b; 一、简介 Elasticsearch是一个分布式、RESTful风格的搜索和数据分析引擎&#xff0c;适用于各种数据类型&#xff0c;数字、文本、地理位置、结构化数据、非结构化数据&#xff1b; 在实际的工作中&#xff0c;历经过Ela…

南大通用数据库(gbase 8s) 在Centos7环境 集群安装

国产数据库-达梦 一、环境详情二、Centos7 参数优化&#xff08;所有节点&#xff09;三、创建gbase用户&#xff08;所有节点&#xff09;四、 安装部署&#xff0c;只在node1 安装即可同步五、数据库卸载六、数据库连接与使用 当前安装 在指定版本环境下 测试&#xff0c;仅供…

QT的设计器介绍

设计器介绍 Qt制作 UI 界面&#xff0c;一般可以通过UI制作工具QtDesigner和纯代码编写两种方式来实现。纯代码实现暂时在这里不阐述了在后续布局章节详细说明&#xff0c;QtDesigner已经继承到开发环境中&#xff0c;在工程中直接双击ui文件就可以直接在QtDesigner设计器中打…

【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互

目录 专栏导读 6 图形绘制与动画效果 6.1 绘制基本图形、文本和图片 6.2 实现动画效果和过渡效果 7 数据可视化 7.1 使用 Matplotlib绘制图表 7.2 使用PyQtGraph绘制图表 7.3 数据的实时刷新和交互操作 7.3.1 数据的实时刷新 7.3.2 交互操作 7.4 自定义数据可视化…

C# 窗体永远在最前

C# 窗体永远在最前 1、调用系统API public const int HWND_TOP 0;public const int HWND_BOTTOM 1;public const int HWND_TOPMOST -1;public const int HWND_NOTOPMOST -2;//设置此窗体为活动窗体&#xff1a;//将创建指定窗口的线程带到前台并激活该窗口。键盘输入直接指…

【WPF】 本地化的最佳做法

【WPF】 本地化的最佳做法 资源文件英文资源文件 en-US.xaml中文资源文件 zh-CN.xaml 资源使用App.xaml主界面布局cs代码 App.config辅助类语言切换操作类资源 binding 解析类 实现效果 应用程序本地化有很多种方式&#xff0c;选择合适的才是最好的。这里只讨论一种方式&#…