笔试狂刷--Day12(模拟 + 链表的公共节点 + dp)

大家好,我是LvZi,今天带来笔试狂刷--Day12(模拟 + 链表的公共节点 + dp)
在这里插入图片描述

一.删除公共字符(哈希)

题目链接:删除公共字符(哈希)
在这里插入图片描述

分析:

分别读取俩个字符串,将第二个字符串存储到set之中,再遍历第一个字符串,删除公共字符

代码:

import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);char[] str1 = in.nextLine().toCharArray();char[] str2 = in.nextLine().toCharArray();Set<Character> set = new HashSet<>();for(char ch : str2) set.add(ch);StringBuffer ret = new StringBuffer();for(int i = 0; i < str1.length; i++)if(!set.contains(str1[i]))ret.append(str1[i] + "");System.out.print(ret.toString());}
}

二.两个链表的第⼀个公共结点

题目链接:两个链表的第⼀个公共结点
在这里插入图片描述

分析:

模拟即可

代码一:

暴力解法(最容易想到的方法,本质是计数)

  • 分别统计出两个链表的长度,求出差值,让两个链表的长度一致
  • 遍历两个链表,直到值相同
import java.util.*;
/*
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;// 先统计两个链表的长度int len1 = 0, len2 = 0;ListNode c1 = pHead1, c2 = pHead2;while(c1 != null) {c1 = c1.next; len1++;}while(c2 != null) {c2 = c2.next; len2++;}c1 = pHead1; c2 = pHead2;int gap = Math.abs(len1 - len2);if(len1 > len2) {while(gap-- > 0) c1 = c1.next;}else {while(gap-- > 0) c2 = c2.next;}while(c1 != null && c1.val != c2.val) {c1 = c1.next; c2 = c2.next;}return c1;}
}

代码二:

利用等量关系:
创建两个指针cur1和cur2,同时往后走,如果走到节点的末尾(null),就让指针指向另一个节点的头结点,继续往后走,直到两个指针所处的节点相同

在这里插入图片描述


代码二:

import java.util.*;
/*
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 cur1 = pHead1, cur2 = pHead2;while(cur1 != cur2) {cur1 = cur1 == null ? pHead2 : cur1.next;cur2 = cur2 == null ? pHead1 : cur2.next;}return cur1;}
}

三.mari和shiny(dp)

题目链接:mari和shiny(dp)
在这里插入图片描述

分析:

分别统计s,sh,shy的数量即可
使用cnt1来统计字符s的数量,使用cnt2统计字符sh的数量,使用ret统计shy的数量

代码:

import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();char[] str = in.next().toCharArray();long cnt1 = 0, cnt2 = 0, ret = 0;for(int i = 0; i < n; i++) {if(str[i] == 's') cnt1++;else if(str[i] == 'h') cnt2 += cnt1;else if(str[i] == 'y') ret += cnt2;}System.out.print(ret);}
}

总结:

  • 本题不要想复杂了,实际上只需要维护两个字符的数量即可,本质上是一个简单的动态规划的思想

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

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

相关文章

StringUtils中isBlank()和isEmpty()的区别

1.首先导入依赖common-lang3 <!--string的扩展api--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version> <!-- 请使用最新版本 --></dependency&g…

《网络安全技术 网络安全众测服务要求》

近日&#xff0c;全国网络安全标准化技术委员会发布《网络安全技术 网络安全众测服务要求》&#xff08;GB/T 43741-2024&#xff0c;以下简称“众测服务要求”&#xff09;&#xff0c;并将在2024年11月1日正式实施。 《众测服务要求》确立了网络安全众测服务的角色及其职责&…

ruoyi漏洞总结

若依识别 黑若依 :icon hash"-1231872293 绿若依 :icon hash"706913071” body" 请通过前端地址访 " body" 认证失败&#xff0c;无法访问系统资源 " 如果页面访问显示不正常&#xff0c;可添加默认访问路径尝试是否显示正常 /login?redi…

Dashboard 介绍

Dashboard 介绍 一、K8S Dashboard简介 简单的说&#xff0c;K8S Dashboard是官方的一个基于WEB的用户界面&#xff0c;专门用来管理K8S集群&#xff0c;并可展示集群的状态。K8S集群安装好后默认没有包含Dashboard&#xff0c;我们需要额外创建它 二、RABC简介 还是那句话&a…

MLP手写数字识别(1)-MNIST数据集下载与可视化(tensorflow)

1.下载与查看MNIST数据集 from keras.datasets import mnist(x_train_image,y_train_label),(x_test_image,y_test_label) mnist.load_data() print("train images:",x_train_image.shape) print("test images:",x_test_image.shape) print("train …

LeetCode 面试经典150题 28.找出字符串中第一个匹配项的下标

题目&#xff1a;给你两个字符串 haystack 和 needle &#xff0c;请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标&#xff08;下标从 0 开始&#xff09;。如果 needle 不是 haystack 的一部分&#xff0c;则返回 -1 。 思路&#xff1a;暴力&#xff08;…

RabbitMQ知识点总结和复习

之前项目中用到RabbitMQ的场景主要是订单信息的传递&#xff0c;还有就是利用RabbitMQ的死信队列属性设置&#xff0c;实现延迟队列效果&#xff0c;实现超时支付取消功能&#xff0c;以及在两个不同项目中传递数据等场景。 最近几年的工作中都是一直用的RabbitMQ&#xff0c;…

Springboot+MybatisPlus入门案例(postman测试)

一、项目框架 pom.xml依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apac…

基于php+mysql+html图书管理系统(含实训报告)

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、Php、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

任何内核都无法启动解决方案

背景 实验中不停编译新的内核又懒得删除了&#xff0c;于是乎在编译到第9716个内核后&#xff0c;无法启动了。 报错如下&#xff1a; 主要是这句报错&#xff1a; 解决方案 ubuntu linux开机进入不了系统的解决办法 进入Recovery Mode打开root shell失败&#xff1a; 一…

【数据结构】您有一份KMP算法教学已到账,请注意查收!!!

KMP算法 导读一、KMP算法1.1 重要术语1.2 部分匹配值1.3 部分匹配值的作用 二、KMP算法原理2.1 从指针的角度理解KMP算法2.2 从匹配的角度理解KMP算法2.3 小结 三、KMP算法的实现3.1 next数组3.2 next数组的计算3.2.1 通过PM值计算next数组3.2.2 通过移位模拟计算next数组3.2.3…

Python的类和assert断言

Python中的**类(Class)**是一个抽象的概念&#xff0c;比函数还要抽象&#xff0c;这也就是Python的核心概念&#xff0c;面对对象的编程方法(OOP)&#xff0c;其它如:Java、C等都是面对对象的编程语言。 面对对象(oop)中的对象&#xff0c;是一个非常重要的知识点&#xff0c;…

基于Spring Boot的音乐网站与分享平台设计与实现

基于Spring Boot的音乐网站与分享平台设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看首…

acwing算法提高之数学知识--高斯消元

目录 1 介绍2 训练 1 介绍 本专题用来记录高斯消元相关题目。 2 训练 题目1&#xff1a;207球形空间产生器 C代码如下&#xff0c; #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <cmath>using…

【软件工程】详细设计

目录 前言详细设计算法设计工具——判定表 前言 软件工程生命周期分为八个阶段&#xff1a; 问题定义—>可行性研究—>需求分析 —>概要设计—>详细设计—>编码与单元测试 —>综合测试—>软件维护 这节我们讲的是软件开发流程中的一个阶段&#xff0c;需求…

2024-05-03 问AI: 在深度学习中,什么叫文字嵌入层

文心一言 在深度学习中&#xff0c;文字嵌入层&#xff08;Word Embedding Layer&#xff09;是神经网络的一个部分&#xff0c;主要用于将离散的文本数据&#xff08;如单词、句子等&#xff09;转换为连续的低维向量表示。这种转换有助于神经网络更好地理解和处理文本数据&a…

✔ ★Java大项目——用Java模拟RabbitMQ实现一个消息队列(二)【创建核心类、封装数据库操作】

✔ ★Java大项目——用Java模拟RabbitMQ实现一个消息队列 四. 项⽬创建五. 创建核⼼类 ★创建 Exchange&#xff08;名字、类型、持久化、自动删除、参数&#xff09;创建 MSGQueue&#xff08;名字、持久化、独占标识&#xff09;创建 Binding&#xff08;交换机名字、队列名字…

OpenCV(四)—— 车牌号识别

本节是车牌识别的最后一部分 —— 车牌字符识别&#xff0c;从一个完整的车牌图片到识别出车牌上的字符大致需要如下几步&#xff1a; 预处理&#xff1a;将车牌图片灰度化、二值化&#xff0c;并去除识别时的干扰因素&#xff0c;比如车牌铆钉字符分割&#xff1a;将整个车牌…

【设计模式】之工厂模式(三种)

系列文章目录 【设计模式】之单例模式 【设计模式】之模板方法模式 【设计模式】之责任链模式 【设计模式】之策略模式 前言 今天给大家介绍23种设计模式中的工厂模式&#xff0c;学过Spring的小伙伴应该不陌生&#xff0c;今天给大家详细介绍一下它。&#x1f308; 注意&…

Linux——命名管道

管道特点 只能用于具有具体祖先的进程之间的通信&#xff0c;通常&#xff0c;一个管道由一个进程创建&#xff0c;然后该进程调用fork&#xff0c;创建子进程&#xff0c;关闭相应的读写端&#xff0c;然后父子进程就可以通信了管道提供流式服务一般而言&#xff0c;进程退出…