持续更新


文章目录

  • 简单题
    • 1. 反转链表
    • 2. 合并有序数列
    • 3. 判断链表中是否有环
    • 4. 链表排序
    • 5. 判断一个链表是否为回文结构
    • 6. 两个链表的第一个公共点
    • 7. 删除有序链表中重复的元素

简单题

1. 反转链表

输入:[ 1 2 3]

输出: [ 3 2 1]

public class Solution {public ListNode ReverseList(ListNode head) {// 利用指针if(head == null) return null;ListNode pre = null;ListNode next = null;while(head != null){next = head.next;head.next = pre;pre = head;head = next;}return pre;}
}

2. 合并有序数列

输入 : {2},{1}

输出:{1,2}

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;* }*/public class Solution {public ListNode mergeTwoLists (ListNode l1, ListNode l2) {if(l1 == null) return l2;if(l2 == null) return l1;// 创建头结点,指向0ListNode head = new ListNode(0);ListNode temp = head;while(l1 != null && l2 != null){if(l1.val > l2.val){temp.next = l2;l2 = l2.next;}else{temp.next = l1;l1 = l1.next;}temp = temp.next;}// 判断是否遍历结束temp.next = (l1 == null)? l2:l1;// 头结点是0return head.next;}
}

3. 判断链表中是否有环

判断给定的链表中是否有环。如果有环则返回true,否则返回false。

你能给出空间复杂度[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-67B3cPuf-1623758646111)(https://www.nowcoder.com/equation?tex=O(1)]%5C)的解法么?

解题思路 - HashSet

import java.util.*;
/*** 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 tmp = head;while(tmp!=null){if(set.contains(tmp)){return true;}set.add(tmp);tmp = tmp.next;}return false;}
}

4. 链表排序

给定一个无序单链表,实现单链表的排序(按升序排序)。

输入:

输入 :[1,3,2,4,5]
返回值 :{1,2,3,4,5}

解题思路 : ArrayList

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;* }*/public class Solution {/*** * @param head ListNode类 the head node* @return ListNode类*/public ListNode sortInList (ListNode head) {// write code hereif(head==null) return null;ArrayList<Integer> list = new ArrayList<>();//将单链表中的数据放入arraylist中ListNode tmp = head;ListNode res = head;int n=0;     // 记录数组的长度while(tmp!=null){n++;list.add(tmp.val);tmp = tmp.next;}// 排序Collections.sort(list);// 取出for(int i=0; i<n; i++){res.val = list.get(i);res = res.next;}return head;}
}

5. 判断一个链表是否为回文结构

给定一个链表,请判断该链表是否为回文结构。

输入 :[1 2 2 1]
返回值 :true
  • 回文结构 -
  • 解题思路 - 栈(先进后出)
import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;* }*/public class Solution {/*** * @param head ListNode类 the head* @return bool布尔型*/public boolean isPail (ListNode head) {// write code hereif(head==null) return false;Stack<Integer> stack = new Stack<>();ListNode tmp = head;// 将数值压入栈while(tmp!=null){stack.push(tmp.val);tmp = tmp.next;}// 取出栈顶,去head元素进行比较while(head!=null){if(head.val != stack.pop()){return false;}head = head.next;}return true;}
}

6. 两个链表的第一个公共点

输入两个无环的单链表,找出它们的第一个公共结点。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6oC10YYj-1623758646116)(C:\Users\华为\AppData\Roaming\Typora\typora-user-images\image-20210615191432615.png)]

/*
public class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;}
}*/
public class Solution {public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {if(pHead1==null || pHead2==null) return null;ListNode p1=pHead1;ListNode p2=pHead2;while(p1!=p2){p1=p1.next;p2=p2.next;if(p1!=p2){if(p1==null) p1 = pHead2;if(p2==null) p2 = pHead1;}}return p1;}
}

7. 删除有序链表中重复的元素

删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次

输入 :{1,1,2}
返回值 :{1,2}
import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;* }*/public class Solution {/*** * @param head ListNode类 * @return ListNode类*/public ListNode deleteDuplicates (ListNode head) {// write code hereif(head==null) return head;ListNode tmp = head;while(tmp.next != null){if(tmp.val == tmp.next.val){tmp.next = tmp.next.next;}else{tmp = tmp.next;}}return head;}
}

数据结构知识点 -- 链表(Java实现)相关推荐

  1. 数据结构之链表(java语言实现)

    链表的底层储存结构: 相对于数组这一需要连续.足够大空间的数据结构,链表只需要利用"指针"将一组零碎的空间(在链表中称之为节点)串联起来,这样就可以避免在创建数组时一次性申请过大的 ...

  2. 数据结构之链表Java

    1.链表定义 public class LNode {//1.单链表结点定义(链表=节点->节点->节点->节点->... 节点=数据域+节点域)public int data ...

  3. Java实现自定义队列和树结构_Java数据结构之链表、栈、队列、树的实现方法示例...

    本文实例讲述了java数据结构之链表.栈.队列.树的实现方法.分享给大家供大家参考,具体如下: 最近无意中翻到一本书,闲来无事写几行代码,实现几种常用的数据结构,以备后查. 一.线性表(链表) 1.节 ...

  4. java链表的数据结构_Java数据结构 获取链表(LinkedList)的第一个和最后一个元素

    Java数据结构 获取链表(LinkedList)的第一个和最后一个元素 以下实例演示了如何使用 LinkedList 类的 linkedlistname.getFirst() 和 linkedlis ...

  5. java城市链表_数据结构城市链表 1. 城市链表 [问题描述]将若干城市的信息 联合开发网 - pudn.com...

    数据结构城市链表 所属分类:文章/文档 开发工具:Java 文件大小:174KB 下载次数:7 上传日期:2017-12-18 18:37:53 上 传 者:叁佰 说明:  1. 城市链表 [问题描述 ...

  6. Java数据结构之链表(单链表)

    文章目录 一.链表 概念 结构 二.无头单链表 图解 代码实现 特点 三.带头单链表 为何引入带头单链表 代码实现 注意 提示:以下是本篇文章正文内容,Java系列学习将会持续更新 一.链表 概念 链 ...

  7. 浅谈:数据结构之单链表,java代码演示单链表

    单链表 本文是观看尚硅谷韩老师视频学习总结,部分来源网络. 单链表介绍 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每 ...

  8. 牛客网Java刷题知识点之Java 集合框架的构成、集合框架中的迭代器Iterator、集合框架中的集合接口Collection(List和Set)、集合框架中的Map集合...

    不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素. ...

  9. 数据结构之 链表( 单链表, 双链表,循环链表)

    前篇.链表的概括 1.链表(Linked list)说明 是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer).由于不必须按 ...

最新文章

  1. Microsoft Visual Studio 2005 简体中文专业版(DVD)下载地址
  2. 【整理总结】Visual Studio 扩展和更新
  3. 提高网站访问速度的34条军规(2)
  4. iOS之深入解析dispatch source的原理与功能
  5. java提取多行嵌套div/div内容的正则表达式_提取某一段div标签之间内容的正则表达式怎么写...
  6. 计算机x线影像ppt,计算机X线摄影ppt课件
  7. VMware ESXi 环境备份与还原处理案例
  8. 安卓交叉编译环境配置
  9. 1022. Genealogical Tree(topo)
  10. 遥感数据下载——土地利用(覆盖)数据下载
  11. 谷歌浏览器无法登陆_论坛上传图片后自动退出登陆?你不是一个人,原因及解决方法来了...
  12. linux添加jdk权限不够
  13. Tomcat中temp文件夹出现项目副本问题的解决方法
  14. 允许用户使用 MAK 密钥激活 Office 2010 批量许可版
  15. 在iOS7中修改键盘Return键的类型
  16. IDEAR 上传git出现的一系列错误
  17. CF1463F Max Correct Set(取小样法+状压 DP)
  18. 监控io性能、free命令、ps命令、查看网络状态、linux下抓包
  19. linux打开xml文件,xml文件扩展名,xml文件怎么打开?
  20. 配置Cross-Origin的几种方法

热门文章

  1. 未转变者DLC皮肤在服务器,未转变者 steam上 最新的版本 肿么联机?肿么创建房间...
  2. ERP主要软件品牌对比
  3. 【区块链 | Polygon】Polygon区块链PHP开发包-使用PHP语言开发Polygon
  4. [PLC]ST语言一:LD_LDI_AND_ANI_OR_ORI
  5. 【云周刊】第135期:云栖大会珍贵技术资料:20+覆盖容器技术、智能工业、大数据、开源数据库...
  6. 未来共享出行自动驾驶安全威胁预测
  7. 数据结构第二次实验-赫夫曼编码及其应用
  8. Kubernetes安装与卸载
  9. 【腾讯TMQ】WIFI安全测试,其实不难
  10. 个体工商户核名查询_网上核名怎么查询