4、链表。

news2025/1/16 21:39:46

哈希表介绍

哈希表的简单介绍
1)哈希表在使用层面上可以理解为一种集合结构
2)如果只有key,没有伴随数据value,可以使用HashSet结构(C++中叫UnOrderedSet)
3)如果既有key,又有伴随数据value,可以使用HashMap结构(C++中叫UnOrderedMap)
4)有无伴随数据,是HashMap和HashSet唯一的区别,底层的实际结构是一回事
5)使用哈希表增(put)、删(remove)、改(put)和查(get)的操作,可以认为时间复杂度为 O ( 1 ) O(1) O(1),但是常数时间比较大
6)放入哈希表的东西,如果是基础类型,内部按值传递,内存占用就是这个东西的大小
7)放入哈希表的东西,如果不是基础类型,内部按引用传递,内存占用是这个东西内存地址的大小
有关哈希表的原理,将在提升班“与哈希函数有关的数据结构”一章中讲叙原理
TreeMap有序表,如果是自己定义的类型则需要自己定义一个比较器,再创建TreeMap的时候传入这个比较器方法。

单链表

链表解题方法论

1)对于笔试,不用太在乎空间复杂度,一切为了时间复杂度
2)对于面试,时间复杂度依然放在第一位,但是一定要找到空间最省的方法
重要技巧:
1)额外数据结构记录(哈希表等)
2)快慢指针

回文链表

用栈实现判断回文链表

public class Test{
   
	public static class Node {
   
		public int value;
		public Node next;

		public Node(int data) {
   
			this.value = data;
		}
	}

	// need n extra space
	public static boolean isPalindrome1(Node head) {
   
		Stack<Node> stack = new Stack<Node>();
		Node cur = head;
		while (cur != null) {
   
			stack.push(cur);
			cur = cur.next;
		}
		while (head != null) {
   
			if (head.value != stack.pop().value) {
   
				return false;
			}
			head = head.next;
		}
		return true;
	}
}

快慢指针

快指针(n1)每次走两步,满指针(n2)每次走一步,快指针走完的时候,慢指针在中点。然后把右半部分逆序,
连到中点指针(O(1))上,前后两部分按顺序比较。
和前半部分比较。

public class Test{
   
	public static class Node {
   
		public int value;
		public Node next;

		public Node(int data) {
   
			this.value = data;
		}
	}
	// need O(1) extra space
	public static boolean isPalindrome3(Node head) {
   
		if (head == null || head.next == null) {
   
			return true;
		}
		Node n1 = head;
		Node n2 = head;
		while (n2.next != null && n2.next.next != null) {
    // find mid node
			n1 = n1.next; // n1 -> mid
			n2 = n2.next.next; // n2 -> end
		}
		n2 = n1.next; // n2 -> right part first node
		n1.next = null; // mid.next -> null
		Node n3 = null;
		while (n2 <

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

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

相关文章

一个 OpenTiny,Vue2 Vue3 都支持!

大家好&#xff0c;我是 Kagol&#xff0c;OpenTiny 开源社区运营&#xff0c;TinyVue 跨端、跨框架组件库核心贡献者&#xff0c;专注于前端组件库建设和开源社区运营。 今天给大家介绍如何同时在 Vue2 和 Vue3 项目中使用 TinyVue。 TinyVue 是一套跨端、跨框架的企业级 UI…

AI深度学习部署全记录

AI部署流程&#xff0c;以PyTorch为例&#xff1a; 1.Torch.Model->ONNX->ONNXSIM->TensortRT->落地 2.Torch.Model->Pt->ONNX->ONNXRunTime->落地 3.Torch.Model->Pt->Libtorch->落地 4.Torch.Model->PNNX->TensorRT->落地 5.…

途乐证券|七大科技巨头,股价集体下跌!国际油价大跌!这一夜发生了啥?

当地时间周三&#xff0c;受前一天惠誉评级下调美国长时间外币发行人违约评级影响&#xff0c;金融商场危险偏好遭到按捺&#xff0c;全球股票、多数大宗产品等危险资产价格普跌&#xff0c;美国三大股指集体跌落。到收盘&#xff0c;道指跌0.98%&#xff0c;标普500指数跌1.38…

【2023年电赛】运动目标控制与自动追踪系统(E 题)最简单实现

本方案的思路是最简单的不涉及复杂算法&#xff1a;识别矩形框&#xff0c;标记矩形框&#xff0c;输出坐标和中心点&#xff0c;计算长度&#xff0c;控制舵机移动固定长度&#xff01;仅供完成基础功能参考&#xff0c;不喜勿喷&#xff01; # 实现运动目标控制与自动追踪系…

使用上 Spring 的事件机制

本文主要是简单的讲述了Spring的事件机制&#xff0c;基本概念&#xff0c;讲述了事件机制的三要素事件、事件发布、事件监听器。如何实现一个事件机制&#xff0c;应用的场景&#xff0c;搭配Async注解实现异步的操作等等。希望对大家有所帮助。 Spring的事件机制的基本概念 …

Windows驱动开发必备工具

Windows驱动开发必备工具 设备树文软件 可以查看设备信息 数字签名工具安装包 开发用的数字签名证书密钥 断点命中工具包&#xff08;双机调试必备&#xff09; 二进制文件解析工具 日志查看工具&#xff08;必备&#xff09; IRP查看工具 C驱动开发相关书籍 有需要工具、书籍…

零基础也能懂:用9个简单步骤解说Spring MVC运行流程!

大家好&#xff0c;我是小米&#xff01;今天&#xff0c;我将带你深入探索 Spring MVC 的运行流程&#xff0c;让你对这个技术有更深刻的理解。无需担心&#xff0c;我会用简单易懂的语言&#xff0c;详细解释每个步骤&#xff0c;让你信心满满地迎接校招面试的挑战&#xff0…

安装金蝶云星空出错 T_META FORMENUMITEM

找不到对象"T_META FORMENUMITEM”&#xff0c;因为它不存在或者你没有所需的权限 解决方案 如果出现以下问题

闲人闲谈PS之四十五——锁表功能引发的“血案”

惯例闲话&#xff1a;这次不说闲话了&#xff0c;刚刚解决一个系统事故级别的问题&#xff0c;没被领导问责已经很幸运了。 分享下处理问题的过程 事件经过 和往常一样&#xff0c;早上闲人打开电脑第一件事情是打开SAP&#xff0c;查看系统日志&#xff0c;结果跳出来一大堆…

DP学习第六篇之下降路径最小和

DP学习第六篇之下降路径最小和 931. 下降路径最小和 - 力扣&#xff08;LeetCode&#xff09; 一.题目解析 二. 算法原理 状态表示 tips: 经验题目要求。以[i,j]位置为结尾&#xff0c;。。。 dp[i][j]: 到达[i, j]位置时&#xff0c;此时的最小下降路径和 状态转移方程 ti…

富文本粘贴图片改为图片上传的方式

代码 <template><div><el-upload:action"uploadUrl":before-upload"handleBeforeUpload":on-success"handleUploadSuccess":on-error"handleUploadError"name"file":show-file-list"false":heade…

RPC框架引入zookeeper服务注册与服务发现

Zookeeper概念及其作用 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是大数据生态中的重要组件。它是集群的管理者&#xff0c;监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理…

海外ASO优化之如何提高应用的可见度和安装量

关键词的投放能够激励用户通过搜索查询找到我们的应用程序&#xff0c;安装它并在他们的设备上运行它。如果有足够的流量&#xff0c;应用程序在搜索中的某些关键词的排名将会提升&#xff0c;并且有助于提高我们应用程序的知名度和自然下载量。 1、选择正确的关键词来提升。 …

【韩顺平】JDBC

第一节 JDBC概述 1.1 JDBC原理图 Java不可能具体地去操作数据库&#xff0c;因为数据库有许多种&#xff0c;直接操作数据库是一种很低效且复杂的过程。 因此&#xff0c;Java引入JDBC&#xff0c;规定一套操作数据库的接口规范&#xff0c;从而要求数据库厂商去实现JDBC接口。…

金鸣识别将无表格线的图片转为excel的几个常用方案

我们知道&#xff0c;金鸣识别要将横竖线齐全的表格图片转为excel非常简单&#xff0c;但要是表格线不齐全甚至没有表格线的图片呢&#xff1f;这就没那么容易了&#xff0c;在识别这类图片时&#xff0c;我们一般会使用以下的一种或多种方法进行处理&#xff1a; 1. 基于布局…

04 Ubuntu中的中文输入法的安装

在Ubuntu22.04这种版本相对较高的系统中安装中文输入法&#xff0c;一般推荐使用fctix5&#xff0c;相比于其他的输入法&#xff0c;这款输入法的推荐词要好得多&#xff0c;而且不会像ibus一样莫名其妙地失灵。 首先感谢文章《滑动验证页面》&#xff0c;我是根据这篇文章的教…

网络安全--原型链污染

目录 1.什么是原型链污染 2.原型链三属性 1&#xff09;prototype 2)constructor 3)__proto__ 4&#xff09;原型链三属性之间关系 3.JavaScript原型链继承 1&#xff09;分析 2&#xff09;总结 3)运行结果 4.原型链污染简单实验 1&#xff09;实验一 2&#xff0…

matlab编程实践18、19

浅水方程 浅水方程可以建立起海啸和浴缸中波浪的数学模型。浅水方程建立了水或者其它不可压缩液体受扰动时传播的模型。隐含的假设是&#xff0c;液体的深度和波浪的长度、扰动等相比是很小的。 在这样的记号下&#xff0c;浅水方程为双曲守恒定律的一个例子。 使用拉克斯-冯特…

0基础学习VR全景平台篇 第77篇:全景相机-圆周率外接收音方案

一、相机外接收音准备工作 需要自行购买USB外置声卡&#xff0c;无线麦克风&#xff0c; Type-c的拓展器。 USB外置声卡 &#xff1a; 产品参数 品牌: HAGiBiS/海备思 名称: USB三合一声卡 接口:耳麦孔/耳机孔/麦克风孔 工作电流:≤38mA 工作电压: DV 5V 输入信噪比:≥90dB …

Facebook营销推广怎么做?有哪些技巧?

Facebook是使用人数比较多的一个社交软件,也是跨境电商的首要选择平台。要想做好Facebook宣传推广&#xff0c;做好以下步骤很重要。 一、基础设置 1.创建 Facebook 业务公共主页 这相当于商业版的Facebook个人资料。您可以添加自己的品牌名称&#xff0c;上传个人资料和封面…