刷题笔记(链表)-02

勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

导读:本篇文章讲解 刷题笔记(链表)-02,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

删除链表中的节点

题目地址:237. 删除链表中的节点 – 力扣(LeetCode) (leetcode-cn.com)

刷题笔记(链表)-02

思路:只需要将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)

刷题笔记(链表)-02

思路:

  • 首先判断头节点是否为空,空直接返回头节点
  • 定义一个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)

刷题笔记(链表)-02

思路

  • 首先判断头节点和头节点的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;
    }
}

代码均由力扣编译器,提交通过,描述编写不当地方还请大家评论区指出💪!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140731.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!