Chain Surfase Test - java 链表经典 OJ 面试题 - 巨细

news2025/1/22 19:44:33

在这里插入图片描述


效果图

在这里插入图片描述


LeetCode - 206. 反转链表

===================================================================================

代码如下:


/**

  • 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) {

if(head==null){

return null;

}

ListNode prev = null;

ListNode cur = head;

while(cur!=null){

ListNode curNext = cur.next;

cur.next = prev;

prev = cur;

cur = curNext;

}

return prev;

}

}

图解

在这里插入图片描述


效果图

在这里插入图片描述


LeetCpde - 876. 链表的中间结点

======================================================================================

代码如下:


/**

  • 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) {

if(head==null){

return null;

}

ListNode fast = head;

ListNode slow = head;

while(fast!=null&&fast.next!=null){

fast = fast.next.next;

slow = slow.next;

}

return slow;

}

}

图解

在这里插入图片描述


效果图

在这里插入图片描述


题霸 - 链表中倒数第k个结点

==============================================================================

代码如下:


/*

public class ListNode {

int val;

ListNode next = null;

ListNode(int val) {

this.val = val;

}

}*/

public class Solution {

public ListNode FindKthToTail(ListNode head,int k) {

if(head==null|| k<=0){

return null;

}

ListNode fast = head;

ListNode slow = head;

while(k-1!=0){

fast=fast.next;

if(fast==null){

return null;

}

k–;

}

while(fast.next!=null){

fast=fast.next;

slow = slow.next;

}

return slow;

}

}

附图

在这里插入图片描述

效果图

在这里插入图片描述


LeetCode - 21 - 合并两个有序链表

=======================================================================================

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

代码如下


/**

  • 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 mergeTwoLists(ListNode l1, ListNode l2) {

ListNode head1= l1;

ListNode head2 = l2;

ListNode newHead = new ListNode();

ListNode p = newHead;

while(head1!=null&&head2!=null){

if(head1.val<head2.val){

p.next = head1;

p = p.next;

head1=head1.next;

}else{// head1,val >= head2。val

p.next = head2;

p = p.next;

head2 = head2.next;

}

}

if(head1==null){

p.next = head2;

}

if(head2==null){

p.next = head1;

}

return newHead.next;

}

}

图解

在这里插入图片描述


效果图

在这里插入图片描述


题霸 - 链表分割

========================================================================

现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,

且不能改变原来的数据顺序,返回重新排列后的链表的头指针。

代码如下:


import java.util.*;

/*

public class ListNode {

int val;

ListNode next = null;

ListNode(int val) {

this.val = val;

}

}*/

public class Partition {

public ListNode partition(ListNode pHead, int x) {

ListNode a = null;

ListNode b = a;// [a,b] 存储小于x的值

ListNode c = null;

ListNode d = c;// [c.d] 存储大于或等于的x的值

ListNode cur = pHead;

while(cur!=null){

if(cur.val<x){

if(a==null){

a = cur;

b = cur;

}else{

b.next = cur;

b = b.next;

}

}else{

if(c==null){

c=cur;

d=cur;

}else{

d.next = cur;

d = d.next;

}

}

cur = cur.next;

}

if(a == null){

return c;

}

if(c==null){

return a;

}

if(d,next !=null){

d.next = null;

}

b.next = c;

return a;

}

}

图解

在这里插入图片描述

效果图

在这里插入图片描述


题霸 - 删除链表(有序的)中重复的结点

===================================================================================

代码如下:


/*

public class ListNode {

int val;

ListNode next = null;

ListNode(int val) {

this.val = val;

}

}

*/

public class Solution {

public ListNode deleteDuplication(ListNode head) {

if(head==null){

return null;

}

ListNode cur = head;

ListNode newHead = new ListNode(-1);

ListNode tmp = newHead;

while(cur!=null){

if(cur.next!=null&&cur.val==cur.next.val){

while(cur.next!=null&&cur.val==cur.next.val){

cur=cur.next;

}

cur =cur.next;

}else{

tmp.next = cur;

tmp = tmp.next;

cur = cur.next;

}

}

tmp.next = null;

return newHead.next;

}

}

图解

在这里插入图片描述

效果图

![在这里插入图片描述](h

ttps://img-blog.csdnimg.cn/e116cfed3c88487b8c5acb2d9c0dcc6b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARGFyayBBbmQgR3JleQ==,size_20,color_FFFFFF,t_70,g_se,x_16)


题霸 - 链表的回文结构

===========================================================================

对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。

给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。

测试样例:(正反都一样)

1 2 3 2 1

代码如下:


import java.util.*;

/*

public class ListNode {

int val;

ListNode next = null;

ListNode(int val) {

this.val = val;

}

}*/

public class PalindromeList {

public boolean chkPalindrome(ListNode head) {

// write code here

if(head==null){

return true;

}

ListNode fast = head;

ListNode slow = head;

while(fast!=null&&fast.next!=null){

fast = fast.next.next;

slow = slow.next;

}

ListNode cur = slow.next;

while(cur!=null){

ListNode curNext = cur.next;

cur.next = slow;

slow = cur;

cur = curNext;

}

while(head!=slow){

if(head.val!=slow.val){

return false;

}

if(head.next == slow){

return true;

}

head = head.next;

slow = slow.next;

}

return true;

}

}

图解

在这里插入图片描述

效果图

在这里插入图片描述


LeetCode - 160. 相交链表

===================================================================================

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。

题目数据 保证 整个链式结构中不存在环。

注意,函数返回结果后,链表必须 保持其原始结构 。

代码如下


/**

  • Definition for singly-linked list.

  • public class ListNode {

  • int val;
    
  • ListNode next;
    
  • ListNode(int x) {
    
  •     val = x;
    
  •     next = null;
    
  • }
    
  • }

*/

public class Solution {

public ListNode getIntersectionNode(ListNode headA, ListNode headB) {

if(headA==null||headB == null){

return null;

}

ListNode pl = headA;

ListNode ps = headB;

int lenA = 0;

int lenB = 0;

while(pl!=null){

lenA++;

pl = pl.next;

}

pl = headA;

while(ps!=null){

lenB++;

ps = ps.next;

}

ps = headB;

int len = lenA-lenB;

if( len < 0){

pl = headB;

ps = headA;

len = lenB -lenA;

}

while(len!=0){

pl = pl.next;

len–;

}

while(pl!=ps){

pl = pl.next;

ps = ps.next;

}

return pl;

}

}

附图


在这里插入图片描述


附图

在这里插入图片描述


力扣神奇解法

在这里插入图片描述


Leet Code - 141 - 环形链表

=====================================================================================

给定一个链表,判断链表中是否有环。

如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,

我们使用整数 pos 来表示链表尾连接到链表中的位 置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。

如果链表中存在环,则返回 true 。 否则,返回 false 。

代码如下:


/**

  • 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;

}

ListNode fast = head;

ListNode slow = head;

while(fast!=null&&fast.next!=null){

fast = fast.next.next;

if(fast==slow){

return true;

}

slow = slow.next;

}

return false;

}

}

附图

在这里插入图片描述


效果图

在这里插入图片描述


LeetCode - 141 - 环形链表 ||

=======================================================================================

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。

如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用 于标识环的情况,并不会作为参数传递到函数中。

说明:不允许修改给定的链表。

进阶:

你是否可以使用 O(1) 空间解决此题?

代码如下


(head == null){

return false;

}

ListNode fast = head;

ListNode slow = head;

while(fast!=null&&fast.next!=null){

fast = fast.next.next;

if(fast==slow){

return true;

}

slow = slow.next;

}

return false;

}

}

附图

在这里插入图片描述


效果图

在这里插入图片描述


LeetCode - 141 - 环形链表 ||

=======================================================================================

为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。

如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用 于标识环的情况,并不会作为参数传递到函数中。

说明:不允许修改给定的链表。

进阶:

你是否可以使用 O(1) 空间解决此题?

代码如下


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

K-Means++代码实现

K-Means代码实现 数据集 https://download.csdn.net/download/qq_43629083/87246495 import pandas as pd import numpy as np import random import math %matplotlib inline from matplotlib import pyplot as plt# 按文件名读取整个文件 data pd.read_csv(data.csv)class…

Minikube – 配置 Jenkins Kubernetes plugin

文章目录1. 配置 kubernetes credentials2. 安装 kubernets plugin3. 安装 docker 插件4. 连接 minikube 集群5. Pod template 参数6. Container template 参数7. 实例7.1 创建一个简单 pod7.2 pod name 变化7.3 指定 namespace7.4 volumes 挂载7.5 Liveness Probe 探针7.6 创建…

关于l2实时接口的功能分析

因为国内外股价的上涨都可以在界面上去查询&#xff0c;所以公司能准确地判断股价上涨&#xff0c;并适时买入、卖出&#xff0c;以此获得一定的利润。 l2实时接口还可以把以往的数据表示成一条折线&#xff0c;让公司在进行分析时更形象、更有参考意义。在连接界面后&#xf…

[附源码]Python计算机毕业设计Django校园订餐系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

星环科技TDS 2.4.0 发布: 数据开发、数据治理、数据运营套件能力再次升级

近日&#xff0c;星环科技大数据开发工具 Transwarp Data Studio 2.4.0版本重磅发布&#xff0c;新版本中数据开发、数据治理、数据运营三大套件能力全部升级&#xff0c;让数据开发更便捷、数据治理更高效、数据运营更智能。本次升级的核心能力如下&#xff1a; 数据开发套件…

【Opencv实战】高手勿入,Python使用Opencv+Canny实现边缘检测以及轮廓检测(详细步骤+源码分享)

前言 有温度 有深度 有广度 就等你来关注哦~ 所有文章完整的素材源码都在&#x1f447;&#x1f447; 粉丝白嫖源码福利&#xff0c;请移步至CSDN社区或文末公众hao即可免费。 在这次的案例实战中&#xff0c;我们将使用Python 3和OpenCV。我们将使用OpenCV&#xff0c;因为它是…

谷歌牛人发布小说式《算法图解》,竟被人扒下来,在GitHub开源了

今天给大家带来了一本算法方向的好书&#xff1a;巴尔加瓦&#xff08;Aditya Bhargava&#xff09;老师 著&#xff0c;袁国忠老师译的 《算法图解&#xff1a;像小说一样有趣的算法入门书》&#xff0c;网上有没有开源版本我不知道&#xff0c;我就看他内容不错所以推荐给大家…

蓄电池建模、分析与优化(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️❤️&#x1f4a5;&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清…

[附源码]Python计算机毕业设计Django校园运动会管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

数据存储,详细讲解

✨数据存储&#xff0c;详细讲解&#x1f49c;数据类型的介绍&#xff1a;&#x1f499;整形的内存存储大小端介绍&#xff1a;&#x1f49b;浮点数的存储&#x1f49c;数据类型的介绍&#xff1a; 1.内置类型&#xff1a; char //字符数据类型&#xff08;1&#xff…

SpringBoot 之 AOP

前言&#xff1a; Spring 三大核心思想是啥&#xff0c;还记得不&#xff1f;IOC&#xff08;控制反转&#xff09;&#xff0c;DI&#xff08;依赖注入&#xff09;&#xff0c;AOP&#xff08;面向切面编程&#xff09;。回顾一下这三个东西&#xff1a; IOC&#xff1a;不考…

Dash初探:如何将Label和Dropdown放在一行

Use Dash! How to display html.Lable and dcc.Dropdown on the same line? 1、目标 下图展示了我想要实现的效果。 数据筛选部分包含了三个筛选条件&#xff1a;日期区间选择器&#xff1b;区域选择器&#xff1b;地市选择器。其中&#xff0c;地市选择器的取值和已选区域…

【1805. 字符串中不同整数的数目】

来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个字符串 word &#xff0c;该字符串由数字和小写英文字母组成。 请你用空格替换每个不是数字的字符。例如&#xff0c;"a123bc34d8ef34" 将会变成 " 123 34 8 34" 。注意…

[附源码]JAVA毕业设计砂石矿山管理系统(系统+LW)

[附源码]JAVA毕业设计砂石矿山管理系统&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术…

如何将Word转成PDF格式?这三种方法总有一个适合你

如何把Word文档转换成PDF文件格式呢&#xff1f;大家在传输文件的时候&#xff0c;相信很多小伙伴都喜欢不使用PDF文件格式&#xff0c;因为它非常的稳定&#xff0c;在浏览文件的时候格式不会乱&#xff0c;但我们都是先做好Word文档&#xff0c;然后再把它转成PDF格式&#x…

诗人贺伟陪你看世界杯

国内三大拥有转播权的主流平台&#xff08;央视、中国移动咪咕和抖音&#xff09;都已经公布了解说阵容 CCTV解说阵容 贺炜、刘嘉远、朱晓雨、曾侃、李晨明、孙思辰、邵圣懿。 此次央视世界杯采取了“单口”解说的模式&#xff0c;这多少还是会让球迷们感到错愕。以往的足球盛…

ubuntu+Docker双容器docker-compose部署Django+Vue项目(2-Django)

文章目录部署Django后端接口下载Python环境及一些尝试pip包管理运行项目容器报错1(查询容器IP解决)报错2(pvsite_uwsgi.ini文件配置socket还是http)报错3(用http先)用python manage.py runserver运行项目先报错4(下载cryptography库)回到用uwsgidjango运行成功先在uwsgidjango中…

FT2004(D2000)开发实战之PBF配置

一 PBF概述 PBF英文全称Phytium Base Firmware,PBF主要作用: 初始化PLL设置CPU主频初始化DDR4初始化PCIe控制器初始化全局中断和定时器跳转到U-boot 飞腾FT2004芯片BIOS固件由两部分构成,PBF+U-boot或者PBF+UEFI,最终的BIOS烧写⽂件由PBF固件包中的脚本程序⽣成,当然在生…

为什么消费返利模式层出不穷?这个消费返利玩法值得你借鉴

大家好&#xff0c;我是林工&#xff0c;不知道大家听说过消费返利没有&#xff1f;消费返利是互联网常见的一个商业模式&#xff0c;是指互联网平台将自己所销售的商品和服务让渡给消费者并获得一定比例的报酬&#xff0c;消费者通过平台享受到的佣金和消费总额&#xff08;金…

正则表达式简介

一、介绍 正则表达式(Regular Expression)是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&#xff08;称为"元字符"&#xff09;。 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字…