刷题笔记(链表)-02
Posted 康小庄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题笔记(链表)-02相关的知识,希望对你有一定的参考价值。
题目地址:237. 删除链表中的节点 - 力扣(LeetCode) (leetcode-cn.com)
思路:只需要将node节点的next的val赋值给node节点的val,然后将node节点的next的next赋值node的next
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public void deleteNode(ListNode node) {
node.val=node.next.val;
node.next=node.next.next;
}
}
题目地址:83. 删除排序链表中的重复元素 - 力扣(LeetCode) (leetcode-cn.com)
思路:
- 首先判断头节点是否为空,空直接返回头节点
- 定义一个ptr接受头节点,while循环,条件:ptr.next!=null 如果ptr的next的val等于ptr的val,那么ptr.next=ptr.next.next;
- 否则ptr=ptr.next,最后返回头节点
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null){
return head;
}
ListNode ptr=head;
while(ptr.next!=null){
if(ptr.val==ptr.next.val){
ptr.next=ptr.next.next;
}else{
ptr=ptr.next;
}
}
return head;
}
}
题目地址:剑指 Offer 24. 反转链表 - 力扣(LeetCode) (leetcode-cn.com)
思路
- 首先判断头节点和头节点的next是否为空,二者一个为空,直接返回头节点
- 定义空的newhead
- while循环 当头节点不为空
- 先定义一个临时变量 temp 接受head的next ListNode temp=head.next;
- head.next=newhead; 先把head的next为null
- newhead=head; 再将head赋值给newhead
- head=temp; 相当于交换头节点和头节点下一个节点的位置
- 最后返回newhead
1 2 3 4 5
举例
- head=1,head.next=2,temp=null
- 先把2的值给temp,将2的位置变为null,
- 再将1的值赋值给newhead,这样1反转过来就是最后一个元素
- 最后将temp的值赋值给head,也就是头节点现在是2 ,继续循环下去得到结果 5 4 3 2 1
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
if(head==null|| head.next==null){
return head;
}
ListNode newhead=null;
while(head!=null){
ListNode temp=head.next;
head.next=newhead;
newhead=head;
head=temp;
}
return newhead;
}
}
代码均由力扣编译器,提交通过,描述编写不当地方还请大家评论区指出!
以上是关于刷题笔记(链表)-02的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode刷题笔记之链表篇面试题 02.04. 分割链表