记录力扣热题-100——从链表中找到刷题感觉

news/2024/4/29 11:17:57/文章来源:https://blog.csdn.net/m0_58847451/article/details/131560959

目录

  • 一. 🦁 前言
  • 二. 🦁 解题过程
    • 1. 题目
    • 2. 思路一
    • 3. 思路二
  • 三. 🦁 文末活动
    • 内容简介
    • 本书结构
    • 关于代码

一. 🦁 前言

狮子此前已经很久没有碰过算法题了,对于之前好不容易攒起来的题感又没了…最近准备面试,又得重新将其捡起来。算法题是一种很奇妙的东西,如果刚开始刷很难找得到感觉,总得一步一步慢慢来,心急吃不到热豆腐,狮子建议如果刚开始刷题,先从简单的链表题开始刷,不断动笔演练解题过程,感觉慢慢就会好起来了,现在狮子来分享一下每日一题之——环形链表。

二. 🦁 解题过程

1. 题目

给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。

在这里插入图片描述

输入:head = [3,2,0,-4], pos = 1
输出:true
解释:链表中有一个环,其尾部连接到第二个节点。

2. 思路一

如果学过hash表,这个题最简单的方法就是建立一个HashSet,然后遍历整个链表,将结点一个一个存进去,如果遍历到第N个结点存不进去,则说明该链表存在环!!!

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public boolean hasCycle(ListNode head) {if(head == null) return false;Set<ListNode> set = new HashSet<>();ListNode pre = head;while(pre.next != null){if(! set.add(pre)){return true;}pre = pre.next;}return false;}
}

3. 思路二

第二种思路就是可以使用快慢指针pre和post,并且pre需要比post多走一步。在同一起点时,如果是直链则pre永远不会和post相遇!如果链表存在环,则终会相遇!!!代码如下:

/*** Definition for singly-linked list.* class ListNode {*     int val;*     ListNode next;*     ListNode(int x) {*         val = x;*         next = null;*     }* }*/
public class Solution {public boolean hasCycle(ListNode head) {if(head == null || head.next == null) return false;ListNode pre = head;ListNode post = head;while(pre != null && pre.next != null){post = post.next;pre = pre.next;pre = pre.next;if(post == pre) return true;}return false;}
}

三. 🦁 文末活动

在这里插入图片描述


🦁 送书抽奖活动 🦁

算法训练是一种很枯燥的东西,有一本好的辅助书本可以助你乘风破浪,现在市面上大多算法书都是基于C++的,对于Java选手非常不友好,现在给大家推荐一本好书,由机械出版社出版的《算法精粹:经典计算机科学问题的Java实现》,基于JDK11实现,非常实用,推荐入手!!!

本次活动由机械出版社友情赞助!!!

如果说计算机之于计算机科学就像望远镜之于天文学,那么编程语言就像望远镜的镜头。无论是在本科的课堂(计算机科学、软件工程等)上,还是在中级编程课本(例如,关于人工智能或算法的入门书)中,有些交给新手程序员解决的特定编程问题已经变得司空见惯了,以至于可以被视为经典。从简单的只需寥寥数行代码就能够解决的问题,到复杂的需要跨多个章节来构建系统的问题,这些问题范围很广。有些问题涉及人工智能,有些问题仅涉及常识,有些问题是实际存在的,而有些问题是虚构的。

20年来,Java已经成为世界上非常流行的编程语言之一。可以说,它已经成为企业、高等教育以及Android应用程序开发中的主导语言。通过本书,希望能够引领大家意识到Java不仅仅是实现最终目标的一种手段,还是解决计算问题的一种工具。本书中的问题能够帮助老练的程序员在学习某些编程语言高级特性的同时,反思之前学过的计算机科学课程内容并有新的收获。使用Java的在校生和自学型程序员都可以通过学习普遍适用的问题求解技术来加速计算机科学课程的学习进度。本书涵盖了各种各样的问题,因此所有人都能从中受益。

在这里插入图片描述

内容简介

无论何种软件开发问题,都有可能已经有了解决方案。本书收集了非常有用的解决方案,可以指导你学习那些经过千锤百炼的解决问题的技术。本书介绍的原则和算法可以保证你在一个又一个的项目中节省大量的时间。

本书包含50多个练习,这些练习是多年来一直在计算机科学课堂中使用的。你可以通过实践这些例子来探索核心算法、约束问题、人工智能应用等。

本书主要内容包括:

  • 递归、记忆化和位操作。

  • 搜索、图和遗传算法。

  • 约束满足问题。

  • k均值聚类、神经网络和对抗搜索。

本书结构

  • 第1章介绍大多数读者可能已经熟知的问题求解技术。像递归、记忆化和位运算这类内容是后续章节讨论其他技术的基础。

  • 第2章重点介绍搜索问题。搜索是一个非常大的主题,本书中的大部分问题都可以归到这个主题下。本章介绍最基本的搜索算法,包括二分搜索、深度优先搜索、广度优先搜索和A*搜索。

  • 第3章介绍如何建立一个框架来解决广泛的问题。这些问题可以用相互之间受到约束的有限领域变量来进行抽象,包括经典的八皇后问题、澳大利亚地图着色问题以及字谜问题。

  • 第4章探索图算法。对于初学者来说,这些算法的适用范围非常广。本章将介绍如何构建图数据结构,然后使用它来解决几个经典的优化问题。

  • 第5章探讨遗传算法,这种算法在不确定性上要比本书中的大多数算法大得多,但有时可以解决那些传统算法无法在合理的时间内解决的问题。

  • 第6章介绍k均值聚类,这可能是本书中算法最具体的一章。这种聚类技术实现简单,易于理解,适用范围广。

  • 第7章解释什么是神经网络,旨在让读者领略简单神经网络究竟是什么样子的。本章不会全面介绍这个令人兴奋而又不断发展的领域,而是介绍如何在不使用外部库的情况下根据基本原理来构建神经网络,让你真正了解神经网络究竟是如何工作的。

  • 第8章介绍双人博弈中的对抗搜索。本章将探索一种被称为极小化极大的搜索算法,该算法可以用来开发国际象棋、国际跳棋和四子棋程序。

  • 第9章涵盖一些书中其他章节没有提及的有趣问题。

  • 第10章是对Oracle的Java语言架构师布赖恩·戈茨(Brian Goetz)的访谈,他指导了该语言的开发工作。他为读者提供了一些有关编程和计算机科学的明智建议。

关于代码

本书源代码是基于Java 11编写的,而且利用了Java 11的某些新特性。之所以选择Java 11版本,是因为该版本是撰写本文时Java所发布的最新LTS(Long-Term Support,长期维护)版本。事实上,其中大量代码都可以在Java 8及之后的版本中运行。据我所知,仍有很多程序员出于各种各样的原因(比如Android)在使用Java 8,但是我希望能在使用较新Java版本的同时,通过讲授一些该语言的新特性来为读者提供额外的价值。

本次活动赠书5本,评论区抽取5位小伙伴送书

活动时间: 截止到2023-07-12 20: 00
参与方式: 点赞、收藏本文章,并评论“人生苦短,我用Java!”
抽奖时间: 2023.07.12
公布时间: 2023.07.12
通知方式:交流群内公布或私信通知

更多活动可继续关注上方🦁的博客,好运总会轮到你!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_326391.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

这些代码,差点把我气出内伤

先问大家一个小问题&#xff1a;你觉得看别人代码累&#xff0c;还是自己写代码累&#xff1f; 我相信有很多朋友会说&#xff0c;当然是自己写代码累了&#xff0c;要思考逻辑、要动手敲键盘&#xff0c;身心俱疲啊&#xff1b;但是&#xff0c;如果你需要经常阅读别人的代码…

leetcode 141.环形链表(快慢指针追击问题)

⭐️ 往期相关文章 &#x1f4ab;链接1&#xff1a;链表分割 &#x1f4ab;链接2&#xff1a;链表中倒数第k个结点(快慢指针问题) &#x1f4ab;链接3&#xff1a;leetcode 876.链表的中间结点(快慢指针问题) &#x1f4ab;链接4&#xff1a;leetcode 206.反转链表 &#x1f4…

vue echarts k线图 子功能设置

1 图中自定义选择区间, 手动鼠标拉取区间显示 2 底部数据选择条 dataZoom: [{type: inside,xAxisIndex: [0, 1],start: 98,end: 100},{show: true, // 这个是打开数据 选择条xAxisIndex: [0, 1],type: slider,top: 85%,start: 98,end: 100}], 3 鼠标在 k线图 选择区域 显示 的…

简历石沉大海!这份新鲜出炉的测试用人需求分析报告揭示了原因

最近有朋友吐槽简历投递后石沉大海&#xff0c;而主动打电话面试的除了外包还是外包。软件测试就业形势真的这么糟糕了&#xff1f; 小酋决定用数据揭开真相。因此小酋选取“软件测试”、“自动化测试”、“测试开发”作为搜索关键词&#xff0c;统计了 无忧网 近一个月用人市…

118.浏览器支持和修复Safari浏览器的Flexbox漏洞

在我们之前的文章中&#xff0c;我们介绍了测试的步骤 虽然现在大部分新版本的浏览器都能支持99%的CSS属性&#xff0c;但是不排除的是仍然有一些用户使用老的IE浏览器或者版本较低的浏览器去浏览我们的网页&#xff0c;这样我们的网站可能无法按照我们的预期工作&#xff1b…

[HNOI2008] 越狱

1.介绍 原题链接(回去补上,教练把锣鼓禁了qwq谴责这种行为&#xff01;&#xff01;&#xff01;) 一句话题意&#xff1a;房间1到房间n中&#xff0c;求存在相邻两个房间的宗教相同的可能性总和 就这&#xff1f;省选&#xff1f;哪个省的&#xff1f;湖南的&#xff1f;我…

学习小波分析的一些资料

Papers Wavelets and Subband Coding (2007) - M. Vetterli, J. Kovačević Tutorials A Really Friendly Guide to Wavelets (1999) - C. Valens [CiteSeerX][Mirror]A Practical Guide to Wavelet Analysis (1998) - C. Torrence , G. P. Compo [CiteSeerX]Basics of Wav…

hadoop --- MapReduce

MapReduce定义&#xff1a; MapReduce可以分解为Map (映射) Reduce (规约) &#xff0c; 具体过程&#xff1a; Map : 输入数据集被切分成多个小块&#xff0c;并分配给不同的计算节点进行处理Shuffle and Sort&#xff1a;洗牌和排序&#xff0c;在 Map 阶段结束后&#xf…

日本 NFT 项目概览与特点总结

日本的 NFT 市场 日本的 NFT 市场起源于与国内动漫和娱乐偶像的合作&#xff0c;重点关注本土文化&#xff0c;文化成为日本 NFT 项目的重要基石。 关键要点&#xff1a; 日本的 NFT 产业具有三个特点&#xff1a;广泛的知识产权&#xff08;IP&#xff09;、低 FUD 水平以及…

看完就会,从抓包到接口测试的全过程解析

一、为什么抓包 从功能测试角度 通过抓包查看隐藏字段 Web 表单中会有很多隐藏的字段&#xff0c;这些隐藏字段一般都有一些特殊的用途&#xff0c;比如收集用户的数据&#xff0c;预防 CRSF 攻击&#xff0c;防网络爬虫&#xff0c;以及一些其他用途。这些隐藏字段在界面上…

在idea中使用Git技术

1.配置git环境 打开idea,点击file->setting->搜索git&#xff0c; 将git的安装路径填写进去 2.去gitee创建一个远程仓库 3.拉入一个.gitignore文件&#xff0c;过滤掉不需要管理的文件 4.在idea进行如下操作 5.选择要提交的内容 目前只是保存在了本地仓库 6.推送到远端…

28-大文件上传(了解)

一、是什么&#xff1f; &#x1f697;&#x1f697;&#x1f697;不管怎样简单的需求&#xff0c;在量级达到一定层次时&#xff0c;都会变得异常复杂。 文件上传简单&#xff0c;文件变大就复杂 上传时&#xff0c;以下几个注意点会影响用户体验 服务器处理数据的能力请求超…

Mycat2 使用教程(三)原始数据导入分库分表【MySQL分库分库分表】

Mycat2 使用教程&#xff08;三&#xff09;原始数据导入分库分表【MySQL分库分库分表】 本文主要描述mycat2完成分库分别数据源配置后&#xff0c;将数据导入的过程mysql 分库分表如果是新项目&#xff0c;则不用考虑本文内容mycat2如何配置分库分表&#xff1f;见上文 1.计…

5个网站帮你找到免费优质的视频素材

5个免费可商用视频素材网站&#xff0c;建议收藏&#xff01; 潮点视频 https://shipin520.com/shipin-mb/all-def-267-all-all-all-all-all-0-1.html?from_code2510 潮点视频是一个提供优质高清、无水印的视频素材网站&#xff0c;站内有大量的AE模板、PR模板、实拍素材、视…

自定义 MVC 框架思想

目录 一、MVC设计模式 1. 什么是MVC 2. 三层架构与MVC的区别 二、自定义MVC框架 1. 为什么要学习自定义MVC框架 2. 自定义MVC的工作原理 3. 自定义MVC框架的优势 三、自定义MVC实例流程 1. mvc三层架构的弊端 2. 自定义MVC的工作流程 2.1 子控制器&#xff08;…

打包时未添加livepusher模块

我们的项目采用的是混入开发&#xff0c;html5, 使用到了安卓离线打包&#xff0c;其中使用到了livepusher模块&#xff0c;本来没什么难事的&#xff0c;很简单的一个问题&#xff0c;但是中文的官方文档却介绍错了包名&#xff0c;一直在郁闷为啥不行&#xff0c;痛苦啊。本来…

计算机基础--->数据结构(7)【红黑树】

文章目录 二三树二三树的性质二三树一个简单的插入例子二三树的特点 红黑树红黑树的特点红黑树的节点红黑树的插入操作1. 左旋2. 右旋颜色翻转3. 颜色翻转插入实例 二三树 二三树与红黑树的性质非常相似&#xff0c;但是二三树能更直观的让人理解构建过程 二三树的性质 二三树是…

skywalking linux安装部署

SkyWalking APM tar 下载 结合自己的es版本下载对应的tar 地址&#xff1a;https://archive.apache.org/dist/skywalking/ 由于我使用的是es7所以下载对应版本 拷贝对应链接使用wget下载 wget https://archive.apache.org/dist/skywalking/8.7.0/apache-skywalking-apm-es7…

信息安全概述笔记

保密性、完整性、可用性是传统的信息安全的原则和目标&#xff0c;目前随着信息安全问题的日益严峻&#xff0c;信息安全的原则和目标衍生为诸如可控性、不可否认性等其他的原则和目标。 保密性&#xff08;Confidentiality&#xff09;:确保信息只能由那些被授权使用的人获取…

【论文笔记】Skill-based Meta Reinforcement Learning

【论文笔记】Skill-based Meta Reinforcement Learning 文章目录 【论文笔记】Skill-based Meta Reinforcement LearningAbstract1 INTRODUCTION2 RELATED WORKMeta-Reinforcement LearningOffline datasetsOffline Meta-RLSkill-based Learning 3 PROBLEM FORMULATION AND PRE…