首页 > 其他分享 >day02

day02

时间:2023-04-01 13:22:05浏览次数:43  
标签:head ListNode cur day02 next 链表 null

剑指 Offer 06. 从尾到头打印链表

传送门

题意:

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

分析:

java代码实现

class Solution{
    // 节点定义
    // class ListNode{
    //     int val;
    //     ListNode next;

    //     ListNode(int x) {val=x;}
    // }

    private void reverse(ListNode head) {
        // 带头节点的头插法反转链表
        ListNode p = head.next, q=null;
        head.next = null;

        while(p!=null) {
            q = p.next;
            p.next=head.next;
            head.next = p;
            p = q;
        }
    }

    public int[] reversePrint(ListNode head) {

        if (head == null) return new int[0];

        List<Integer> list = new ArrayList<>();
        ListNode dummy = new ListNode(Integer.MAX_VALUE);
        dummy.next = head;
        reverse(dummy);
        ListNode p = dummy.next;

        while(p!=null){
            list.add(p.val);
            p=p.next;
        }

        int arr[] = new int[list.size()];
        for(int i = 0; i < list.size(); i++) arr[i] = list.get(i);
        return arr;

    }
}

剑指 Offer 24. 反转链表

传送门

题意:

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

分析:

头插法反转单链表

java代码实现

class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode dummy = new ListNode(-9999);
        dummy.next = head;
        head = dummy;
        ListNode p = head.next, q=null;
        head.next = null;

        while(p!=null) {
            q = p.next;
            p.next=head.next;
            head.next = p;
            p = q;
        }
        return head.next;
    }
}

剑指 Offer 35. 复杂链表的复制

传送门

题意

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。

分析

java代码实现

 public Node copyRandomList(Node head) {
        if(head == null) return null;
        Node cur = head;
        Map<Node, Node> map  = new HashMap<>();
        while (cur!=null) {
            map.put(cur, new Node(cur.val));
            cur = cur.next;
        }

        cur = head ;
        while (cur!=null) {
            map.get(cur).next = map.get(cur.next);
            map.get(cur).random = map.get(cur.random);;
            cur = cur.next;
        }
        return map.get(head);
    }

标签:head,ListNode,cur,day02,next,链表,null
From: https://www.cnblogs.com/tswinter3/p/17278471.html

相关文章

  • Day02 - 0.1 + 0.2 === 0.3嘛 | 面试打卡365
    知识讲解系统+全面先说答案,0.1+0.2不等于0.3,因为浮点数表示小数的时候有精度损失。昨天我们已经说到,javascript中会使用52个bit表示小数部分。根据国际标准IEEE754,J......
  • Day02 2.2、HTML基础之表单标签
    二、表单标签是HTML中最终的标签之一,主要是提供了输入框或按钮等标签提供给用户进行交互输入数据。将来表单可以提交到指定服务端程序中进行数据处理。1form标签......
  • Day02 2.3、HTML基础之表单标签的基本使用
    三、表格标签表格系列标签主要是可以数据以表格的格式展示出来。但是现在table表格已经很少使用了,而是改成div+css实现更漂亮的表格。标签描述<table></table......
  • Day02 2.3、HTML基础之标签的练习案例
    使用table+表单,把课堂上的form标签的代码,整理成以下格式(不要外观):<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title></h......
  • Day02 2.1、HTML基础之列表标签
    一、列表标签列表是一种结构标签可以让网页的内容形成列表格式。列表标签在HTML中提供提供了4种:无序列表(UnorderList,ul)就是没有序号的,内容不分先后......
  • JavaSE-day02(面向对象:内部类,枚举,泛型)
    一、内部类内部类是类中的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。当一个类的内部,包含一个完整的事物,且......
  • day02-容器功能
    容器功能1.Spring注入组件的注解Spring中的传统注解@Component、@Controller、@Service、@Repository,在SpringBoot中仍然有效。2.@Configuration@Configuration是Spri......
  • Day02-js高级
    回顾1.html作用:书写网页的,整个网页的架构2.html属于不用编译的语言,直接使用浏览器运行即可3.html都是由预定义的标签: 1)超链接标签:<ahref="跳转服务器地址"target="_s......
  • Day02-ES6新语法
    ES6新语法糖(初级)1什么是ES6JS语法分三块ECMAScript:基础语法BOM浏览器对象historylocationwindowDOM文档对象document编程语言JavaScript是ECMAScr......
  • SpringMVC-day02
    SpringMVC-day0201_基于SSM的三层架构目标了解基于SSM框架的三层架构技术体系路径SSM框架的三层架构技术体系SSM框架的三层架构技术体系在三层架构开发时会......