每日一练——

作者:~小明学编程  

文章专栏:每日一练——Java

格言:目之所及皆为回忆,心之所想皆为过往
在这里插入图片描述

目录

反转链表

题目

代码

链表中间节点

题目

代码

链表中倒数第k个结点

题目

代码


反转链表

链接:https://leetcode.cn/problems/reverse-linked-list/submissions/


题目

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:


输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:


输入:head = [1,2]
输出:[2,1]
示例 3:

输入:head = []
输出:[]
 

提示:

链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000
 

进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?

代码

/**
 * 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 reverseList(ListNode head) {
        ListNode prev = null;
        ListNode cur = head;
        ListNode curNext;
        while(cur!=null) {
            curNext = cur.next;
            cur.next = prev;
            prev = cur;
            cur = curNext;
        }
        return prev;

    }
}

链表中间节点

链接:https://leetcode.cn/problems/middle-of-the-linked-list/

题目

给定一个头结点为 head 的非空单链表,返回链表的中间结点。

如果有两个中间结点,则返回第二个中间结点。

示例 1:

输入:[1,2,3,4,5]
输出:此列表中的结点 3 (序列化形式:[3,4,5])
返回的结点值为 3 。 (测评系统对该结点序列化表述是 [3,4,5])。
注意,我们返回了一个 ListNode 类型的对象 ans,这样:
ans.val = 3, ans.next.val = 4, ans.next.next.val = 5, 以及 ans.next.next.next = NULL.
示例 2:

输入:[1,2,3,4,5,6]
输出:此列表中的结点 4 (序列化形式:[4,5,6])
由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。

代码

/**
 * 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 middleNode(ListNode head) {
        ListNode fast=head;
        ListNode slow=head;
        int n = 0;
        while(fast!=null&&fast.next!=null) {
            fast = fast.next.next;
            slow = slow.next;
            }
        }
        return slow;
    }
}
//返回中间的前一个节点
// class Solution {
//     public ListNode middleNode(ListNode head) {
//         ListNode fast=head;
//         ListNode slow=head;
//         while(fast.next!=null&&fast.next.next!=null) {
//             fast = fast.next.next;
//             slow = slow.next;
//         }
//         return slow;
//     }
// }

链表中倒数第k个结点

链接:https://www.nowcoder.com/practice/529d3ae5a407492994ad2a246518148a?tpId=13&&tqId=11167&rp=2&ru=/activity/oj&qru=/ta/coding-interviews/question-ranking

题目

描述

输入一个链表,输出该链表中倒数第k个结点。

示例1

输入:

1,{1,2,3,4,5}

复制返回值:

{5}

代码

import java.util.*;
/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        ListNode fast = head;
        ListNode slow = head;
        while(k!=0&&fast!=null) {
            fast = fast.next;
            k--;
        }
        if(fast==null&&k!=0) {
            return null;
        }
        while(fast!=null) {
            fast = fast.next;
            slow = slow.next;
        }
        return slow;

    }
}

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Python 计算思维训练——绘图进阶包括使用 Python 的绘图库如 matplotlib 和 seaborn 进行数据可视化,学习创建不同类型的图表,如折线图、散点图、条形图、饼图等。同时还可以学习如何调整图表的样式、添加图例和标题等。 ### 回答2: Python 计算思维训练的一个方面是绘图进阶,这意味着训练者将学习如何使用 Python 编程语言来创建更复杂的图形,并进一步了解算法和数据可视化。在这方面,Python 是一门非常适合初学者入门的编程语言,因为它的代码易于理解,有着强大的数据分析和可视化功能。 在 Python 中,绘制图形最重要的工具是 Matplotlib 库,它是一个非常流行的 Python 绘图工具,可以处理各种数据类型和各种可视化类型。Matplotlib 库可以让程序员轻松绘制各种类型的图形,如折线图,散点图,条形图等,并且可以以多种格式保存图像。 但是,绘制复杂图形需要更熟练的 Python 编程技能。训练者需要了解如何使用 Matplotlib API,编写自定义函数和类,并掌握常见功能比如数据的可视化、图形的注释和颜色的编辑等等。另外,训练者还需要深入了解如何使用一些常见的数据可视化库,例如 Seaborn 和 Plotly,这些库可以生成美观而有用的数据可视化结果。 在绘图进阶训练中,学生将学习如何使用 Python 计算思维来更好地理解和体现数据。Python 是一种高效的编程语言,能够轻松地处理各种类型和大小的数据集,训练者可以利用它来探索和可视化数据,识别数据的趋势、模式和异常值,以便做出更准确和有意义的结论。 总之,Python 计算思维训练的绘图进阶方面可以帮助学生掌握更高级的编程技能,能够生成复杂美观的数据可视化效果,为更好地理解和分析数据打下坚实的基础。 ### 回答3: Python是一种高级编程语言,它具有高度的可读性和简单易学的特点,广泛应用于数据分析、机器学习、人工智能、Web开发等领域。在这些应用场景中,绘图是非常重要的一环。Python的绘图工具也随着时间的推移而不断完善,使得绘图变得越来越容易和灵活。 在Python中,最常用的绘图工具是Matplotlib。它是一款基于Python的绘图库,能够轻松地在Python语言中创建各种类型的图表和多级子图。Matplotlib可以输出高质量的PNG、PDF、SVG、EPS等格式的图片,在学术研究和工作中被广泛使用。 通过Matplotlib的学习,可以帮助我们了解如何使用Python进行数据可视化和交互式可视化。具体来说,Python绘图思维的训练需要掌握以下几个方面: 1. 数据准备 数据准备是绘制图表的基础。这个过程包括从多个来源获取数据,对数据进行处理和清理,并准备数据以用于绘图。Python提供了很多强大的数据处理工具,比如NumPy、Pandas等。 2. 基本图表绘制 Python中最基本的绘图类型是线图、柱状图和散点图。Matplotlib提供了一组简单又灵活的函数来实现这些绘图类型,使得绘图过程非常容易。 3. 自定义图表 对于特定的应用场景,需要定制化的图表展示,Matplotlib也支持自定义的图表设计,包括修改颜色、字体、标记点等设置。 4. 组合图表 有时候需要将多个图表组合在一起以达到更全面的分析,Matplotlib也支持组合图表的设计。从简单的双轴图表到更复杂的多轴图表,Matplotlib提供了丰富的功能。 5. 交互式图表 最后,Python也支持交互式图表,这使得用户可以对图表进行缩放、平移、旋转和选择数据点等操作,从而深入了解数据的细节。 总之,在Python中进行绘图,需要数据处理、图表设计和交互式特性的支持。这些功能都可以通过Matplotlib实现,从而为学习者提供了强大的工具。对于正在进行数据分析、机器学习或其他领域的分析工作的从业人员和学生而言,掌握Python绘图思维的训练是至关重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值