LeetCode刷题笔记-数据结构-day12
Posted LL.LEBRON
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode刷题笔记-数据结构-day12相关的知识,希望对你有一定的参考价值。
文章目录
LeetCode刷题笔记-数据结构-day12
24. 两两交换链表中的节点
1.题目描述
原题链接:24. 两两交换链表中的节点
2.解题思路
根据题目要求,直接遍历即可,具体看代码。
3.代码
class Solution
public:
ListNode* swapPairs(ListNode* head)
ListNode* dummy =new ListNode(-1);
dummy->next=head;
auto p=dummy;
while(p->next&&p->next->next)
auto t1=p->next,t2=t1->next;
p->next=t2;
t1->next=t2->next;
t2->next=t1;
p=t1;
return dummy->next;
;
707. 设计链表
1.题目描述
原题链接:707. 设计链表
2.解题思路
定义一个Node内部类表示节点。
其他操作根据题目要求一步一步来即可,具体操作看代码及注释。
3.代码
class MyLinkedList
class Node
int val;
Node next;
Node(int val)
this.val=val;
this.next=null;
Node head=null;
public MyLinkedList()
public int get(int index)
//索引无效返回-1
if(index<0) return -1;
Node t=head;
for(int i=0;i<index&&t!=null;i++) t=t.next;
//索引无效返回-1
if(t==null) return -1;
return t.val;
public void addAtHead(int val)
Node p=new Node(val);
p.next=head;
head=p;
public void addAtTail(int val)
//如果是第一个添加的节点,直接调用addAtHead方法
if(head==null) head=new Node(val);
//否则遍历到尾部添加
else
Node t=head;
while(t.next!=null) t=t.next;
t.next=new Node(val);;
public void addAtIndex(int index, int val)
//如果index小于0,则在头部插入节点。
if(index<=0) addAtHead(val);
else
int len=0;
//求链表长度
for(Node p=head;p!=null;p=p.next) len++;
//如果 index 等于链表的长度,则该节点将附加到链表的末尾
if(index==len) addAtTail(val);
//如果 index 大于链表长度,则不会插入节点
else if(index>len) return;
else
Node t=head;
for(int i=0;i<index-1;i++) t=t.next;
Node p=new Node(val);
p.next=t.next;
t.next=p;
public void deleteAtIndex(int index)
int len=0;
//求链表长度
for(Node p=head;p!=null;p=p.next) len++;
if(index>=0&&index<len)
if(index==0) head=head.next;
else
Node t=head;
//因为删除的是第index个节点,所以需要找到第index-1个节点
for(int i=0;i<index-1;i++) t=t.next;
t.next=t.next.next;
以上是关于LeetCode刷题笔记-数据结构-day12的主要内容,如果未能解决你的问题,请参考以下文章