首页 > 其他分享 >Q17 LeetCode707 设计链表

Q17 LeetCode707 设计链表

时间:2024-06-08 23:12:20浏览次数:25  
标签:index ListNode int pred next 链表 Q17 LeetCode707 size

 

 1 class MyLinkedList {
 2     int size;
 3     ListNode head;
 4 
 5     public MyLinkedList() {
 6         size = 0;
 7         head = new ListNode(0);
 8     }
 9 
10     public int get(int index) {
11         if (index < 0 || index >= size) {
12             return -1;
13         }
14         ListNode cur = head;
15         for (int i = 0; i <= index; i++) {
16             cur = cur.next;
17         }
18         return cur.val;
19     }
20 
21     public void addAtHead(int val) {
22         addAtIndex(0, val);
23     }
24 
25     public void addAtTail(int val) {
26         addAtIndex(size, val);
27     }
28 
29     public void addAtIndex(int index, int val) {
30         if (index > size) {
31             return;
32         }
33         index = Math.max(0, index);
34         size++;
35         ListNode pred = head;
36         for (int i = 0; i < index; i++) {
37             pred = pred.next;
38         }
39         ListNode toAdd = new ListNode(val);
40         toAdd.next = pred.next;
41         pred.next = toAdd;
42     }
43 
44     public void deleteAtIndex(int index) {
45         if (index < 0 || index >= size) {
46             return;
47         }
48         size--;
49         ListNode pred = head;
50         for (int i = 0; i < index; i++) {
51             pred = pred.next;
52         }
53         pred.next = pred.next.next;
54     }
55 }
56 
57 class ListNode {
58     int val;
59     ListNode next;
60 
61     public ListNode(int val) {
62         this.val = val;
63     }
64 }

 

标签:index,ListNode,int,pred,next,链表,Q17,LeetCode707,size
From: https://www.cnblogs.com/cff1/p/18239079

相关文章

  • 代码随想录第4天 | 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 0
    题目:24.两两交换链表中的节点思路:设置虚拟头结点,双指针+临时指针,(感觉也能递归,未尝试)时间复杂度:O(n)空间复杂度:O(1)坑:1.又忘了else{}和return2.试图访问空指针,多个条件的顺序问题及"&&""||"问题,cur->next要写在cur->next->next前面/***Definitionforsingly-linked......
  • Linux内核链表源代码
    /*SPDX-License-Identifier:GPL-2.0*/#ifndef_LINUX_LIST_H#define_LINUX_LIST_H#include<linux/types.h>#include<linux/stddef.h>#include<linux/poison.h>#include<linux/const.h>#include<linux/kernel.h>/**Simple......
  • AcWing 33:链表中倒数第k个节点 ← 尾插法
    【题目来源】https://www.acwing.com/problem/content/32/【题目描述】输入一个链表,输出该链表中倒数第k个结点。注意:  ●k>=1;  ●如果k大于链表长度,则返回NULL;【数据范围】链表长度[0,30]。【输入样例】输入:链表:1->2->3->4->5,k=2【输出样例】输出:4......
  • 链表-循环链表
    循环链表可以像链表一样只有单向引用,也可以像双向链表一样有双向引用。循环链表和链表之间唯一的区别在于最后一个元素指向下一个元素的指针(tail.next)不是引用undefined,而是指向第一个元素(head).单链表:this.tail.next=this.head;双向链表:this.tail.next=this.head;......
  • 代码随想录算法训练营第四天 Leetcode 24 两两交换链表节点 Leetcode19 删除链表倒数
    链表问题首先要记住设置虚拟头节点Leetcode24两两交换链表节点题目链接思路:就是简单模拟两两交换 要注意链表节点的处理一定要获取到合适的位置比如:这一题中两个交换节点的前一个节点注意链表保存临时节点/***Definitionforsingly-linkedlist.*publicclas......
  • 顺序表、链表、栈和队列总结
    目录顺序表链表栈队列总结补充顺序表实现链表实现栈实现队列实现  顺序表、链表、栈和队列都是线性数据结构,但它们在管理和访问数据方面有不同的特点和用途。以下是它们之间的主要区别:顺序表存储方式:在连续的内存空间中存储元素。访问方式:通过索引直接访......
  • 链表-双向链表
    之前实现的是单向链表,即每个节点有一个元素值和一个指向下一个元素的指针,是单向的.head->a->b->c1.现在来做一个双向的,即对每个节点来说,有两个指针,一个链向下一个元素,另一个链向上一个元素.head-><-b-><-c.链表初始化基本的操作套路和单链表是差不多的......
  • day3链表
    题目:https://leetcode.cn/problems/remove-linked-list-elements/submissions/537974263/题目解析:https://programmercarl.com/0203.移除链表元素.html这道题用了dummyHead,会简单非常多,但是需要注意的是,如果不用dummyHead的话,去除head为啥使用while而不是if呢?个人理解是,可......
  • 代码随想录第3天 | 链表 203.移除链表元素,707.设计链表,206.反转链表
    题目:203.移除链表元素思路:主要是头节点的删除问题,一种是直接在原链表上后移头节点设置虚拟头结点,指向原链表的头结点,在设置一个cur指针指向当前节点,虚拟头节点初始化后就不移动了,使用cur进行移动不要忘记释放删除节点的内存,自行设置的虚拟头节点也要释放时间复杂度:O(n)空......
  • 代码随想录训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表
    python定义链表val:数据域,节点存储的元素。next:指针域,指向下一个节点的指针,最后一个节点指向None表示空指针。点击查看代码classListNode:def__init__(self,val,next=None):self.val=valself.next=next203.移除链表元素题目:给你一个链表的......