力扣linkedlist

反转链表、
java 复制代码
public class reverseList {
//    1->2->3->o  、   o<-1<-2<-3
    public ListNode reverseList(ListNode head){//反转链表
        ListNode prev=null;
        ListNode curr=head;
        while(curr!=null){
            ListNode next=curr.next;
            curr.next=prev;
            prev=curr;
            curr=next;
        }
        return prev;
    }
    public static void main(String[] args) {
        ListNode head = new ListNode(1);
        head.next = new ListNode(2);
        head.next.next = new ListNode(3);
        head.next.next.next = new ListNode(4);
        head.next.next.next.next = new ListNode(5);
        reverseList solution = new reverseList();
        ListNode re = solution.reverseList(head);
        while (re != null) {
            System.out.print(re.val + "");
            re = re.next;
        }
    }
}
相交链表、
java 复制代码
import java.util.HashSet;
import java.util.Set;
public class interlinkedlist {
    public ListNode getIntersectionNode1(ListNode headA,ListNode headB){
        Set<ListNode>set=new HashSet<>();
        while(headA!=null){
            set.add(headA.next);
            headA=headA.next;
        }
        while(headB!=null){
            if(set.contains(headB)){
                return headB;
            }
            headB=headB.next;
        }
        return null;
    }
    public ListNode getIntersectionNode2(ListNode headA,ListNode headB){
        if(headA==null||headB==null) return null;
        ListNode pA=headA,pB=headB;
        while(pA!=pB){
            pA=pA==null?headB:pA.next;
            pB=pB==null?headA:pB.next;
        }
        return pA;
    }
    // 测试代码
    public static void main(String[] args) {
        // 创建两个链表
        // 链表 A: 4 -> 1 -> 8 -> 4 -> 5
        // 链表 B: 5 -> 6 -> 1 -> 8 -> 4 -> 5
        ListNode headA = new ListNode(4);
        headA.next = new ListNode(1);
        headA.next.next = new ListNode(8);
        headA.next.next.next = new ListNode(4);
        headA.next.next.next.next = new ListNode(5);
        ListNode headB = new ListNode(5);
        headB.next = new ListNode(6);
        headB.next.next = new ListNode(1);
        headB.next.next.next = headA.next.next; // 相交节点 8
        headB.next.next.next.next =headA.next.next.next;
        headB.next.next.next.next.next =headA.next.next.next.next;
        interlinkedlist solution = new interlinkedlist();
        ListNode intersection = solution.getIntersectionNode1(headA, headB);
        if (intersection != null) {
            System.out.println("Intersected at '" + intersection.val + "'");
        } else {
            System.out.println("No intersection");
        }
    }
}
class ListNode {
    int val;
    ListNode next;
    public ListNode() {
    }
    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
    ListNode(int x) {
        this.val = x;
        this.next = null;
    }
}
回文链表、
复制代码
//核心思想是通过递归的方式从链表的尾部向前进行比较,同时用一个前指针从头部向尾部进行比较
java 复制代码
package org.example;
public class PalindromeLinkedList {
    private ListNode frontPointer;
    private boolean recursivelyCheck(ListNode currentNode) {
        if (currentNode != null) {
            if (!recursivelyCheck(currentNode.next)) {
                return false;
            }
            if (currentNode.val != frontPointer.val) {
                return false;
            }
            frontPointer = frontPointer.next;
        }
        return true;
    }
    public boolean isPalindrome(ListNode head) {
        frontPointer = head;
        return recursivelyCheck(head);
    }
    public static void main(String[] args) {
        // 创建链表 1 -> 2 -> 2 -> 1
        ListNode node1 = new ListNode(1);
        ListNode node2 = new ListNode(2);
        ListNode node3 = new ListNode(2);
        ListNode node4 = new ListNode(3);
        node1.next = node2;
        node2.next = node3;
        node3.next = node4;
        PalindromeLinkedList solution = new PalindromeLinkedList();
        boolean result = solution.isPalindrome(node1);
        System.out.println("链表是否是回文: " + result);
    }
}
相关推荐
百***060135 分钟前
五大消息模型介绍(RabbitMQ 详细注释版)
java·rabbitmq·java-rabbitmq
Coovally AI模型快速验证37 分钟前
去噪扩散模型,根本不去噪?何恺明新论文回归「去噪」本质
人工智能·深度学习·算法·机器学习·计算机视觉·数据挖掘·回归
歌_顿44 分钟前
attention、transform、bert 复习总结 1
人工智能·算法
转转技术团队1 小时前
MyBatis-Plus踩坑血泪史:那些年我们踩过的坑!
java·面试·mybatis
MicroTech20251 小时前
MLGO微算法科技时空卷积与双重注意机制驱动的脑信号多任务分类算法
科技·算法·分类
sg_knight1 小时前
IntelliJ IDEA 实用插件:GitToolBox 使用指南
java·ide·git·intellij-idea·插件·gittoolbox
青云交1 小时前
Java 大视界 -- Java 大数据机器学习模型在电商用户画像构建与精准营销中的应用
java·大数据·机器学习·电商·协同过滤·用户画像·精准营销
txp玩Linux1 小时前
rk3568上解析webrtc音频降噪算法处理流程
算法·音视频·webrtc
z***67771 小时前
Spring EL 表达式的简单介绍和使用
java·后端·spring
立志成为大牛的小牛2 小时前
数据结构——五十二、散列函数的构造(王道408)
数据结构·笔记·程序人生·考研·算法