LeetCode 1789, 6, 138

目录

  • 1789. 员工的直属部门
    • 题目链接
    • 要求
    • 知识点
    • 思路
    • 代码
  • 6. Z 字形变换
    • 题目链接
    • 标签
    • 思路
    • 代码
  • 138. 随机链表的复制
    • 题目链接
    • 标签
    • 思路
    • 代码

1789. 员工的直属部门

题目链接

1789. 员工的直属部门

  • Employee的字段为employee_iddepartment_idprimary_flag

要求

  • 请编写解决方案,查出员工所属的直属部门。
  • 返回结果 没有顺序要求

知识点

  1. count():统计个数的函数。
  2. group by:根据字段分组。

思路

直属部门的定义是 primary_flagY 或者 他只属于一个部门,知道这个定义后,思路就很明显了:先获取只属于一个部门的员工的id employee_id,然后将这些数据作为子表,放到限制条件中,限制条件还有一个 primary_flag = ‘Y’,它们的关系是

代码

selectemployee_id,department_id
fromEmployee
whereprimary_flag = 'Y'
oremployee_id
in(selectemployee_idfromEmployeegroup byemployee_idhavingcount(*) = 1)

6. Z 字形变换

题目链接

6. Z 字形变换

标签

字符串

思路

做这道题时是我想起了高中物理中的简谐运动,可以将其简单理解为正弦函数 y = s i n x y=sinx y=sinx,横轴为时间轴,竖轴为位移轴,只看竖轴的话,那么就是一个质点随着时间流逝在做上下往复的运动,当它到极限(波峰或波谷)时,它就得掉头(调转向上或向下的方向),如下图所示:
正弦函数

讲完这个东西后,理解本题的解法就更容易了。本题可以将原字符串当作这个做简谐运动的质点,它的运动轨迹(即题目中描述的 Z 字形,但我觉得它更像 N 字形一点)就像上图描述的一样,不过这时竖轴就是这个字符在Z字形中的行数,横轴没有实际意义。

所以模拟这个往复运动的过程就能将字符按Z字形分到不同的行上,然后将每行组成的小字符串按照行数的顺序拼接在一起,组成最终的大字符串。

遍历原字符串,字符的行数是从小到大、然后再从大到小的,调转的时机就是 行数为0(波峰) 和 行数为numRows - 1(波谷)

将字符分到不同行时可以使用 S t r i n g B u i l d e r StringBuilder StringBuilder,本题解使用了一个 S t r i n g B u i l d e r StringBuilder StringBuilder数组,每个 S t r i n g B u i l d e r StringBuilder StringBuilder都记录了一行字符,在将所有字符都分到对应的行之后,按顺序将所有行合并到一起。

代码

class Solution {public String convert(String s, int numRows) {// 如果numRows比2小,则不需要改变,直接返回原字符串即可if (numRows < 2) {return s;}// 先初始化numRows个StringBuilder,每个StringBuilder都代表一行StringBuilder[] builders = new StringBuilder[numRows];for (int i = 0; i < numRows; i++) {builders[i] = new StringBuilder();}int i = 0; // i是填充字符的行数int flag = -1; // flag是方向,要么为上: -1,要么为下: 1for (char c : s.toCharArray()) {builders[i].append(c);if (i == 0 || i == numRows - 1) { // 若行数为 第一行 或 最后一行flag = -flag; // 则调转填充字符的方向}i += flag; // 调整行数}// 按顺序合并StringBuilder的字符串StringBuilder res = new StringBuilder();for (StringBuilder builder : builders) {res.append(builder);}return res.toString();}
}

138. 随机链表的复制

题目链接

138. 随机链表的复制

标签

哈希表 链表

思路

先讲一讲什么叫做浅拷贝和深拷贝,实际上这两个概念很简单,浅拷贝就是拷贝后的对象和原来的对象指向同一块内存,而深拷贝是拷贝后的对象和原来的对象指向不同的内存。

本题可以使用旧节点和新节点的映射,key为旧节点,value为新节点。遍历两遍链表,第一遍先创建新节点,并建立映射;第二遍给新节点的next, random赋值,这时就可以从映射中获取旧节点对应的新节点,从而实现深拷贝。

代码

class Solution {// 旧节点与新节点的映射,key为旧节点,value为新节点private final Map<Node, Node> mapper = new HashMap<>();public Node copyRandomList(Node head) {if (head == null) {return null;}// 创建新节点,建立映射for (Node curr = head; curr != null; curr = curr.next) {mapper.put(curr, new Node(curr.val));}// 为新节点的next和random赋值for (Node curr = head; curr != null; curr = curr.next) {Node newNode = mapper.get(curr);newNode.next =  mapper.get(curr.next);newNode.random = mapper.get(curr.random);}// 返回第一个新节点return mapper.get(head);}
}

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

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

相关文章

【开发利器】OpenCV实验大师最新版本又又发布了

最新发布 大家好&#xff0c;OpenCV实验大师 最新发布的安装包已经支持Python3.10了。同时继续支持Python3.8的安装包&#xff0c;OpenCV实验大师工具软件本次从Python3.8升级到Python3.10是为了方便更多基于Python3.10的开发者使用。同时修复了一批软件错误。 安装配置 下载…

SpringBoot修改banner

在resources目录下创建banner.txt文件 到该网站下选择banner https://www.bootschool.net/ascii-art 点击拷贝&#xff1a; 粘贴到banner.txt中&#xff0c;保存 重新运行项目即可&#xff1a;

对 PLC AC 模块的 TRIAC 输出进行故障排除

在大多数离散 PLC 系统中&#xff0c;排除输出设备故障的过程相当简单。如果输出端正常工作&#xff0c;则在“关闭”时应测量 0 V&#xff0c;在“开启”时应测量满源电压。对于数字和继电器输出&#xff0c;情况确实如此。对于由 TRIAC 驱动的 AC 输出也应如此&#xff0c;但…

数据结构预备知识(Java):包装类泛型

1、包装类 1.1 包装类 在Java中&#xff0c;每一个基本数据类型都有一个对应的包装类&#xff1a; 在SE的学习中我们已有过简单了解。 我们可以注意到&#xff0c;除了int类型的包装类为Integer&#xff0c;char类型的包装类为Character外&#xff0c;其余基本类型的包装类均…

远程工作岗位机会

电鸭&#xff1a;​​​​​​https://eleduck.com/?sortnew电鸭社区是具有8年历史的远程工作招聘社区&#xff0c;也是远程办公互联网工作者们的聚集地。在社区&#xff0c;我们进行有价值的话题讨论&#xff0c;也分享远程、外包、零活、兼职、驻场等非主流工作机会。「只工…

llm-大模型落地评测?提供一个领域大模型测评方法

文章目录 前置说明1.领域大模型评估指标1.1.性能指标计算方法1.1.1.F11.1.2.首字响应时间1.1.3.处理效率1.1.4.并发路数1.1.5.正确性1.1.6.完整度1.1.7.相关度1.1.8.有效性 1.2.安全性指标计算方法1.2.1.禁止项内容的统计方式1.2.2.问题项内容占比率的统计方式 1.3.质量指标及计…

启动报错 “lc.exe”已退出,代码为 -1

启动项目时报错 “lc.exe”已退出&#xff0c;代码为 -1&#xff0c;这个原因是项目需要认证的凭证&#xff0c;有两种方法解决 1.手动搜索license&#xff0c;然后删掉即可 2.安装插件 工具->nuget包管理->管理解决方案的nuget包&#xff0c;搜emptylicenses&#xff0c…

使用LangChain+Ollama自己做的一个和大语言模型聊天的网站支持上下文对话,学习记录。

0.引言 在自己学习的过程中可以自己做一个和聊天大模型对话的一个小网站&#xff0c;成就感不亚于人生第一次跑完10km。 1.项目介绍 前端代码&#xff1a;Vue3, MarkDownIT. 后端代码&#xff1a;Python3, Fernet库, OpenAPI, LangChain, Ollama. Ollama 本地模型的部署和管理…

SuperMap iClient3D 11i(2023) SP1 for Cesium 调整

SuperMap iClient3D 11i(2023) SP1 for Cesium 最新版本 下载地址 SuperMap技术资源中心|为您提供全面的在线技术服务 每一次版本升级,都要对代码进行修改调整,都是为了解决功能需求。当然,也为产品做了小白鼠测试,发现bug,优化功能。 由于前端开发使用的是dojo框架,类…

java之sql注入审计

1 基础环境搭建 1.1 mysql数据库搭建 phpStudy是一个PHP调试环境的程序集成包&#xff0c;PHPMysqlApache。 通过phpstduy下载与安装指 定版本的mysql数据库【可以同时下载多个版本&#xff0c;便于应对不对的系统及复现漏洞便捷切换多个版本】 完成下载后&#xff0c;启动…

失眠焦虑?这里有你的心灵疗愈手册

&#x1f343; 亲爱的朋友们&#xff0c;你是否也曾在深夜里辗转反侧&#xff0c;无法入眠&#xff1f;是否也曾因为生活中的琐事而焦虑不安&#xff0c;无法放松心情&#xff1f;在这个快节奏的时代&#xff0c;失眠和焦虑似乎成为了我们生活中难以避免的问题。今天&#xff0…

SpringBoot购物网站

摘要 随着信息技术的高速发展&#xff0c;二十一世纪的网络技术和网络应用正在快速融入人们的生活&#xff0c;并且由于网络服务以及网络应用日渐普及&#xff0c;人们对于现在生活的需求也随之增长&#xff0c;而网上购物的便捷对人们的吸引力越来越大&#xff0c;购物网站可…

ES 8.14 向量搜索优化

参考&#xff1a;https://blog.csdn.net/UbuntuTouch/article/details/139502650 检索器&#xff08;standard、kNN 和 RRF&#xff09; 检索器&#xff08;retrievers&#xff09;是搜索 API 中的一种新抽象概念&#xff0c;用于描述如何检索一组顶级文档。检索器被设计为可以…

【经典爬虫案例】用Python爬取微博热搜榜!

一、爬取目标 本次爬取的是: 微博热搜榜 &#xff08;代码也可直接在下方拿&#xff09;&#xff1a; ​ 分别爬取每条热搜的&#xff1a; 热搜标题、热搜排名、热搜类别、热度、链接地址。 下面&#xff0c;对页面进行分析。 经过分析&#xff0c;此页面没有XHR链接通过&am…

如何覆盖!important修饰的属性

最简单的方法 如果这个!important修饰的属性 是自己的写的&#xff0c;去掉这种写法&#xff0c;使用优先级的方式来写这个属性&#xff08;.outter .inner 的优先级就会比 。outter的优先级高&#xff09; 复杂的方法&#xff1a;用魔法打败魔法 但是这个样式来自于全局css&am…

【机器学习】智能创意工厂:机器学习驱动的AIGC,打造未来内容新生态

&#x1f680;时空传送门 &#x1f50d;机器学习在AIGC中的核心技术&#x1f4d5;深度学习&#x1f388;生成对抗网络&#xff08;GANs&#xff09; &#x1f680;机器学习在AIGC中的具体应用&#x1f340;图像生成与编辑⭐文本生成与对话系统&#x1f320;音频生成与语音合成 …

uniapp小程序计算地图计算距离

我们拿到自身和目标距离经纬度 调用此方法即可计算出自身与目标的距离 最后我所展示的页面如下 具体效果可能会有点偏差 要求严格的可以在精细的计算一下

【Python】Redis数据库

Redis数据库 Unit01一、Redis1.1 概述1.2 安装1.3 Redis-cli1.4 数据类型1.5 字符处理1.6 键的命名规则 二、通用命令三、字符串(String)3.1 概述3.2 常用命令3.3 应用场景 四、列表(List)4.1 概述4.2 常用命令 五、集合(SET)5.1 概述5.3 常用命令 六、有序集合6.1 概述6.2 常用…

【行业应用】基于 Arm 虚拟硬件平台实现微信支付二维码识别的智能闸机系统

基于 Arm 虚拟硬件平台实现微信支付二维码识别的智能闸机系统 本实验过程中所显示的优惠价格及费用报销等相关信息仅在【Arm AI 开发体验创造营】体验活动过程中有效&#xff0c;逾期无效&#xff0c;请根据实时价格自行购买和体验。同时&#xff0c;感谢本次体验活动 Arm 导师…

解读自然语言处理:技术、应用与未来展望

引言 自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是计算机科学、人工智能和语言学的一个跨学科领域&#xff0c;致力于实现人与计算机之间通过自然语言进行有效沟通的能力。NLP 的核心任务是理解、解释和生成人类语言&#xff0c;使计…