网站移动端怎么做/网络平台推广广告费用
leetcode 150道题 计划花两个月时候刷完,今天(第二十二天)完成了4道(50-53)150:
50.(141. 环形链表)题目描述:
给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。
第一版(这个是经典的题目,快慢指针就可以,如果有环他们肯定会相遇,没环一定会到 null )
public class Solution {public boolean hasCycle(ListNode head) {ListNode low=head;ListNode fast=head;while(fast!=null&&low!=null){low=low.next;if(fast.next==null){return false;}fast=fast.next.next;if(low==fast){return true;}}return false;}
}
第二版(我总感觉我对这个起始的指针处理不好,就看了一下解题,他是反着去判断了,也可以学习一下)
public class Solution {public boolean hasCycle(ListNode head) {if(head==null||head.next==null){return false;}ListNode low=head;ListNode fast=head.next;while(low!=fast){if(fast==null||fast.next==null){return false;}fast=fast.next.next;low=low.next;}return true;}
}
51.(2. 两数相加)题目描述:
给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表。
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 2:
输入:l1 = [0], l2 = [0]
输出:[0]
示例 3:
输入:l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
输出:[8,9,9,9,0,0,0,1]
第一版(这个题我第一反应以为他第一个指针是最大位数。。看了好久才读懂了题目。。但是这个题目处理的应该是一个模板,就是 3个while 的模板。。一般就是处理长度不一样的情况下我感觉都是3个while。。)
class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode res=new ListNode(0);ListNode resTemp=res;int add=0;while(l1!=null&&l2!=null){int num=l1.val+l2.val+add;add=num/10;num%=10;resTemp.next=new ListNode(num);resTemp=resTemp.next;l1=l1.next;l2=l2.next;}while(l1!=null){int num=l1.val+add;add=num/10;num%=10;resTemp.next=new ListNode(num);resTemp=resTemp.next;l1=l1.next;}while(l2!=null){int num=l2.val+add;add=num/10;num%=10;resTemp.next=new ListNode(num);resTemp=resTemp.next;l2=l2.next;}if(add!=0){resTemp.next=new ListNode(add);resTemp=resTemp.next;}return res.next;}
}
52.(21. 合并两个有序链表)题目描述:
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]
第一版(这个也是我上面说的长度不一样要一起处理的 3个while模板,只不过这个是链表,你只需要指定了头后面也会跟着这个头,所以这块就是 一个 while 两个 if)
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode res=new ListNode(0);ListNode resTemp=res;while(list1!=null&&list2!=null){if(list1.val<list2.val){resTemp.next=new ListNode(list1.val);list1=list1.next;}else{resTemp.next=new ListNode(list2.val);list2=list2.next;}resTemp=resTemp.next;}if(list1!=null){resTemp.next=list1;}if(list2!=null){resTemp.next=list2;}return res.next;}
}
53.(138. 随机链表的复制) 题目描述:
给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。
构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。
例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么在复制链表中对应的两个节点 x 和 y ,同样有 x.random --> y 。
返回复制链表的头节点。
用一个由 n 个节点组成的链表来表示输入/输出中的链表。每个节点用一个 [val, random_index] 表示:
val:一个表示 Node.val 的整数。
random_index:随机指针指向的节点索引(范围从 0 到 n-1);如果不指向任何节点,则为 null 。
你的代码 只 接受原链表的头节点 head 作为传入参数。
第一版(这个题比较长,意思就是每个节点都要新建,我第一次写了好久,但是写出来还是一坨。。)
class Solution {public Node copyRandomList(Node head) {Node res=new Node(0);Node resTemp=res;Node headTemp=head;Map<Node,Integer> nodeMap=new HashMap();int index=0;while(headTemp!=null){resTemp.next=new Node(headTemp.val);nodeMap.put(headTemp,index++);headTemp=headTemp.next;resTemp=resTemp.next;}Map<Integer,Integer> indexMap=new HashMap();for (Map.Entry<Node, Integer> entry : nodeMap.entrySet()) {if(entry.getKey().random==null){indexMap.put(entry.getValue(),-1);}elseindexMap.put(entry.getValue(),nodeMap.get(entry.getKey().random));}// 复制 random 开始resTemp=res.next;Node temp=res.next;index=0;while(resTemp!=null){temp=res.next;if(indexMap.get(index)!=-1){for(int i=0;i<indexMap.get(index);i++){temp=temp.next;}resTemp.random=temp;}index++;resTemp=resTemp.next;}return res.next;}
}
第二版(看了解题,真的这个思想很好,把每个节点单独出来,一个一个来赋值他的 next和 random)
class Solution {public Node copyRandomList(Node head) {if(head==null){return null;}Map<Node, Node> nodeMap = new HashMap<Node, Node>();Node headTemp=head;while(headTemp!=null){nodeMap.put(headTemp,new Node(headTemp.val));headTemp=headTemp.next;}headTemp=head;while(headTemp!=null){Node nodeNew=nodeMap.get(headTemp);if(headTemp.next!=null){nodeNew.next=nodeMap.get(headTemp.next);}if(headTemp.random!=null){nodeNew.random=nodeMap.get(headTemp.random);}headTemp=headTemp.next;}return nodeMap.get(head);}
}
昨天又鸽了一天。。不知道为啥昨天啥都不想干。。昨天把yys也删了,超鬼王真的肝不动了。。
加油,第二十二天了,早日跳槽!!!
相关文章:

面试经典150题(50-53)
leetcode 150道题 计划花两个月时候刷完,今天(第二十二天)完成了4道(50-53)150: 50.(141. 环形链表)题目描述: 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个…...

Jetpack Compose中使用Android View
使用AndroidView创建日历 Composable fun AndroidViewPage() {AndroidView(factory {CalendarView(it)},modifier Modifier.fillMaxWidth(),update {it.setOnDateChangeListener { view, year, month, day ->Toast.makeText(view.context, "${year}年${month 1}月$…...

《MySQL》事务篇
事务特性 ACID Atomicity原子性:事务中的操作要么全部完成,要么全部失败。 Consistency一致性:事务操作前后,数据满足完整性约束。 Isolation隔离性:允许并发执行事务,每个事务都有自己的数据空间&…...

高阶组件和高阶函数是什么
高阶组件和高阶函数都是在函数式编程中常见的概念。 高阶组件(Higher-Order Component, HOC)是一种函数,接受一个组件作为参数,并返回一个新的组件。它可以用来增强现有的组件,给它添加额外的功能或属性。高阶组件在R…...

初步认识API安全
一、认识API 1. 什么是API API(应用程序接口):是一种软件中介,它允许两个不相关的应用程序相互通信。它就像一座桥梁,从一个程序接收请求或消息,然后将其传递给另一个程序,翻译消息并根据 API 的程序设计执行协议。A…...

MybatisX逆向工程方法
官方文档链接:MybatisX快速开发插件 | MyBatis-Plus (baomidou.com) 使用MybatisX可以快速生成mapper文件,实体类和service及实现 效果 方法:首先下载mybatisX插件 然后创建数据库信息 然后选中表,右键,点击Mybatis…...

每日一题:LeetCode-LCR 179. 查找总价格为目标值的两个商品
每日一题系列(day 16) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🔎…...

SpringBoot 3.2.0 基于Logback定制日志框架
依赖版本 JDK 17 Spring Boot 3.2.0 工程源码:Gitee 日志门面和日志实现 日志门面(如Slf4j)就是一个标准,同JDBC一样来制定“规则”,把不同的日志系统的实现进行了具体的抽象化,只提供了统一的日志使用接…...

微软发布安卓版Copilot,可免费使用GPT-4、DALL-E 3
12月27日,微软的Copilot助手,可在谷歌应用商店下载。目前,只有安卓版,ios还无法使用。 Copilot是一款类ChatGPT助手支持中文,可生成文本/代码/图片、分析图片、总结内容等,二者的功能几乎没太大差别。 值…...

【STM32】程序在SRAM中运行
程序在RAM中运行 1、配置内存分配。 2、修改跳转文件 FUNC void Setup(void) { SP _RDWORD(0x20000000); PC _RDWORD(0x20000004); } LOAD RAM\Obj\Project.axf INCREMENTAL Setup(); 3、修改下载ROM地址和RAM地址; 中断向量表映射 中断向量表映射到SRA…...

docker 部署mysql
docker pull mysql:5.7.25 docker run \ --name mysql \ -e MYSQL_ROOT_PASSWORD123456 \ -p 3306:3306 \ -v /soft/mysql/conf:/etc/mysql \ -v /soft/mysql/data:/var/lib/mysql \-d \mysql:5.7.25安装好之后可以用命令行进入查看 docker exec -it mysql mysql -u root -p密…...

科荣AIO ReportServlet存在目录遍历漏洞
文章目录 产品简介漏洞概述指纹识别漏洞利用修复建议 产品简介 科荣AIO是一款企业管理软件,提供企业一体化管理解决方案。它整合了ERP(如进销存、财务管理)、OA(办公自动化)、CRM(客户关系管理)…...

Ubuntu Desktop 22.04 桌面主题配置
Ubuntu Desktop 22.04 桌面主题配置 使用这么久 Ubuntu Desktop,本着不折腾的原则,简单介绍下自己的桌面主题配置。 安装 tweaks 安装 GNOME Shell 安装 GNOME theme安装 gnome-tweaks & chrome-gnome-shell sudo apt update # 安装 gnome-tweaks…...

SuperMap iServer发布的ArcGIS REST 地图服务如何通过ArcGIS API进行要素查询
作者:yx 前言 前面我们介绍了SuperMap iServer发布的ArcGIS REST 地图服务如何通过ArcGIS API加载,这里呢我们再来看看如何进行要素查询呢? 一、服务发布 SuperMap iServer发布的ArcGIS REST 地图服务如何通过ArcGIS API加载已经介绍如何发…...

H5向微信小程序发送信息(小程序web-view打开H5)
引入weixin-js-sdk npm i weixin-js-sdk 页面引入 // 引入wxjsimport wx from "weixin-js-sdk"; 点击触发方法 methods: {goweap(id){console.log(wx);// H5传递数据 (navigateBack)wx.miniProgram.navigateBack({delta: 1});wx.min…...

白话机器学习的数学-1-回归
1、设置问题 投入的广告费越多,广告的点击量就越高,进而带来访问数的增加。 2、定义模型 定义一个函数:一次函数 y ax b (a 是斜率、b 是截距) 定义函数: 3、最小二乘法 例子: 用随便确定的参…...

ubuntu22下安装minconda
bing 搜索 canda install 找到官方网站 https://docs.conda.io/projects/miniconda/en/latest/ 这里我们安装minconda。 官网有安装方法。 mkdir -p ~/miniconda3 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh…...

如何借助边缘网关打造智慧配电房安全方案
配电房是电力系统的重要组成部分,通常设置有各种高压配电装置和箱柜,是企业安全管理的重点。传统的人工巡检和监控总是难以避免疏漏,导致风险隐患的产生和扩大。 随着物联网、边缘计算、设备联动控制等技术的普及应用,佰马针对配电…...

k8s的二进制部署
k8s的二进制部署 k8s的二进制部署的实验: 源码包部署 k8s的master01:192.168.233.91 组件:kube-apiserver kube-controller-manager kube-scheduler etcd k8s的master02:192.168.233.92 组件:kube-api…...

Python基础语法总结
1.每条语句结束不需要分号(也可以加上), 直接换行, 注意: 如果两行代码写一行, 则必须加分号. 2.定义变量不需要指定类型(如果需要写类型, 需要在变量名后面加": 类型, 这个写法只是方便读代码). 3.变量名大小写敏感. 4.查看变量类型: type(变量名). 5.Python中的int表…...

矩阵理论基本知识
1、矩阵范数、算子范数 矩阵无穷范数是非自相容范数,矩阵1-范数、矩阵2-范数是自相容范数矩阵2-范数:Frobenius范数,是向量2-范数的自然推广。 ∥ A ∥ m 2 ∥ A ∥ F ∑ a i j ∗ a i j \|A\|_{m2}\|A\|_{F}\sqrt{\sum a_{ij}^*a_{ij}} ∥…...

《深入理解Java虚拟机(第三版)》读书笔记:Java内存区域与内存溢出异常、垃圾收集器与内存分配策略
下文是阅读《深入理解Java虚拟机(第3版)》这本书的读书笔记,如有侵权,请联系删除。 文章目录 第2章 Java内存区域与内存溢出异常2.2 运行时数据区域2.3 HotSpot虚拟机对象探秘 第3章 垃圾收集器与内存分配策略3.2 对象已死&…...

android 手机主界面侧滑退出app问题
最近重新搭了个app,发现手机显示APP主界面时,沿着手机右边向左滑,会直接关闭应用,所以想搞个第一次提示,第二次退出app的效果。 结果搞出个复杂的东西,下面是两段代码。1: 1:GestureDetector扩展函数。其…...

spring boot 配置全局日期和时间格式
spring boot 为项目配置 全局日期和时间格式化yyyy-MM-dd HH:mm:ss 方式一:代码配置全局日期和时间格式化 /*** author hua*/ Configuration public class WebConfiguration implements WebMvcConfigurer {/*** 项目全局时间格式化*/ Bean public ObjectMapper get…...

GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(二)
书写上回,上回讲到,Elasticsearch的使用前提即:语法,表结构,使用类型结构等。要学这个必须要看前面这个:GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思…...

鸿蒙APP的代码规范
鸿蒙APP的代码规范是为了确保代码质量、可读性和可维护性而定义的一系列规则和标准。以下是一些建议的鸿蒙APP代码规范,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 代码风格: 采用…...

蓝桥杯-每日刷题-027
出租汽车计费器 一、题目要求 题目描述 有一个城市出租汽车的计费规则是3公里内(含3公里)基本费6元,超过3公里,每一公里1.4元。 现在对于输入具体的公里数x(0<x<1000),编程计算x公里所需…...

安装Node修改Node镜像地址搭建Vue脚手架创建Vue项目
1、安装VSCode和Node 下载VSCode Visual Studio Code - Code Editing. Redefined 下载Node Node.js (nodejs.org) 检验是否安装成功,WinR,输入cmd命令,使用node -v可以查看到其版本号 2、修改镜像地址 安装好node之后,开始修改镜像地址 …...

git 学习 之一个规范的 commit 如何写
最好的话做一件完整的事情就提交一次...

2023 年人工智能研究与技术排名前 10 的国家
人工智能研究是一项全球性的工作。虽然美国和中国因其对人工智能的贡献而备受关注,但事实是,世界各国都在涉足这项技术,尝试新的突破,并吸引投资者的关注。 斯坦福大学的《2023年人工智能报告》估计,到 2022 年&#…...