当前位置: 首页 > news >正文

刷题记录(2)

1. HWOD机试 - 模拟消息队列(100)

在这里插入图片描述
在这里插入图片描述

package com.yue.test;import org.junit.Test;import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;/*** @Author: 夜雨* @Date: 2021-12-08-10:31* @Description:* @Version 1.0*/
public class tsest01 {@Testpublic void demo01() {String one = "2 22 1 11 4 44 5 55 3 33";String two = "1 7 2 3";LinkedList<String> baseOne = new LinkedList<>(Arrays.asList(one.split(" ")));LinkedList<String> baseTwo = new LinkedList<>(Arrays.asList(two.split(" ")));int resultSize = baseTwo.size() / 2;List<List<Integer>> result = new ArrayList<>();for (int j = baseTwo.size() - 1; j >= 0; j -= 2) {List<Integer> tmp = new ArrayList<>();for (int k = 0; k < baseOne.size() - 1; ) {int time = Integer.parseInt(baseOne.get(k));if (Integer.parseInt(baseTwo.get(j)) > time && Integer.parseInt(baseTwo.get(j - 1)) <= time) {tmp.add(Integer.valueOf(baseOne.get(k + 1)));baseOne.remove(k);baseOne.remove(k);continue;}k += 2;}if (tmp.isEmpty()){tmp.add(-1);}result.add(tmp);}}}

改进

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] aStr = scanner.nextLine().split(" ");int[] a = new int[aStr.length];for (int i = 0; i < aStr.length; i++) {a[i] = Integer.parseInt(aStr[i]);}List<Pair> t = new ArrayList<>();for (int i = 0; i < a.length; i += 2) { // 第一行输入两个一对,为发布者的发布时刻和发布内容t.add(new Pair(a[i], a[i + 1]));}t.sort(null); // 按发布时间排序String[] bStr = scanner.nextLine().split(" ");int[] b = new int[bStr.length];for (int i = 0; i < bStr.length; i++) {b[i] = Integer.parseInt(bStr[i]);}List<List<Integer>> msg = new ArrayList<>();for (int i = 0; i < b.length - 1; i += 2) {msg.add(new ArrayList<>());}for (Pair pair : t) {int x = pair.x;int y = pair.y;int ans = -1;for (int i = b.length - 2; i >= 0; i -= 2) { // 从优先级高的订阅者开始遍历,优先匹配优先级高的订阅者if (b[i] <= x && x < b[i + 1]) { // 如果发布时刻在订阅时间中,订阅者收到发布内容ans = i / 2;break; // 只有优先级最高的收到}}if (ans != -1) {msg.get(ans).add(y); // 收到内容}}for (List<Integer> list : msg) {if (list.isEmpty()) {System.out.println(-1);} else {for (int i : list) {System.out.print(i + " ");}System.out.println();}}}static class Pair implements Comparable<Pair> {int x, y;public Pair(int x, int y) {this.x = x;this.y = y;}@Overridepublic int compareTo(Pair other) {return Integer.compare(this.x, other.x);}}
}

2. 分割数组的最大差值(100)

在这里插入图片描述

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] nums = new int[n];long sum = 0;for (int i = 0; i < n; i++) {int num = scanner.nextInt();sum += num;nums[i] = num;}long maxAbs = 0, leftSum = 0;for (int i = 0; i < n - 1; i++) {leftSum += nums[i];// rightSum = sum - leftSum, 差值 = rightSum - leftSum = Math.abs(sum - leftSum)maxAbs = Math.max(maxAbs, Math.abs(sum - 2 * leftSum));}System.out.println(maxAbs);}
}

3. 数值同化(200)-BFS

存在一个m*n的二维数组,其成员取值范围为0,1,2。其中值为1的元素具备同化特性,每经过1s,将上下左右值为0的元素同化为1。而值为2的元素,免疫同化。将数组所有成员随机初始化为0或2,再将矩阵的[0,0]元素修改成1,在经过足够长的时间后,求矩阵中有多少个元素是0或2(即0和2数量之和)
输入:输入的前两个数字是矩阵大小。后面的数字是矩阵内容。
如:4 4
[[0, 0, 0, 0], [0, 2, 2, 2], [0, 2, 0, 0], [0, 2, 0, 0]]
输出:返回矩阵中非1的元素个数

import java.util.*;  public class MatrixAssimilation {  static class Point {  int x, y;  Point(int x, int y) {  this.x = x;  this.y = y;  }  }  public static int countNonOnes(int[][] matrix) {  int m = matrix.length;  int n = matrix[0].length;  // 使用队列来进行BFS  Queue<Point> queue = new LinkedList<>();  // 初始化,将所有初始值为1的点加入队列  for (int i = 0; i < m; i++) {  for (int j = 0; j < n; j++) {  if (matrix[i][j] == 1) {  queue.offer(new Point(i, j));  }  }  }  // 定义四个方向的偏移量  int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};  // 广度优先搜索  while (!queue.isEmpty()) {  Point current = queue.poll();  for (int[] dir : directions) {  int newX = current.x + dir[0];  int newY = current.y + dir[1];  // 检查新坐标是否有效且值为0  if (newX >= 0 && newX < m && newY >= 0 && newY < n && matrix[newX][newY] == 0) {  // 同化该点,并将其加入队列以便进一步同化其相邻的0  matrix[newX][newY] = 1;  queue.offer(new Point(newX, newY));  }  }  }  // 计算非1的元素个数  int count = 0;  for (int i = 0; i < m; i++) {  for (int j = 0; j < n; j++) {  if (matrix[i][j] != 1) {  count++;  }  }  }  return count;  }  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  int m = scanner.nextInt();  int n = scanner.nextInt();  int[][] matrix = new int[m][n];  for (int i = 0; i < m; i++) {  for (int j = 0; j < n; j++) {  matrix[i][j] = scanner.nextInt();  }  }  // 确保起始点为1  if (matrix[0][0] != 1) {  matrix[0][0] = 1;  }  System.out.println(countNonOnes(matrix));  }  
}

4. 数组组成的最小数字(100)在这里插入图片描述

public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] str = scanner.nextLine().split(",");Arrays.sort(str, (a, b) -> {int lengthA = a.length();int lengthB = b.length();if (lengthA != lengthB) {return lengthA - lengthB;} else {return a.compareTo(b);}});StringBuilder stringBuilder = new StringBuilder();if (str.length == 1) {stringBuilder.append(str[0]);System.out.println(stringBuilder);} else if (str.length == 2) {String s1 = str[0] + str[1];String s2 = str[1] + str[0];stringBuilder.append(s1.compareTo(s2) < 0 ? s1 : s2);System.out.println(stringBuilder);} else {String[] res = Arrays.copyOf(str, 3);Arrays.sort(res);for (String r : res) {System.out.print(r);}}}
}

5. 垃圾信息拦截(200)

问题描述:按照如下规则进行垃圾信息识别,发送者A符合以下条件之一,则认为A为垃圾信息发送者:
A发送短信的接收者中,没有发过短信给A的人数L>5
A发送的短信数-A接收的短信数M>10
如果存在X,A发送给X的短信数-A接收到X的短信数N>5

输入描述第一行为条目数目,接下来几行是具体的条目,每个条目是一对ID,第一个数字是发送者ID,后面的数字是接收者ID,中间空格隔开,所有的ID都是为无符号整型,ID最大值为100;
同一个条目中,两个ID不会相同(不会自己给自己发信息)
最后一行为指定ID

输出描述:输出该ID是否为垃圾短信发送者,并且按序列输出L M的值(由于N值不唯一,不需要输出)

例:输入:

15
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
14 1
1 15
1

输出:

true 13 13

输入:

15
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
14 1
1 15
2

输出:

false 0 -1
public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);List<Msg> msgList = new ArrayList<>();int count = Integer.parseInt(scanner.nextLine());for (int i=0;i<count;i++){String[] str = scanner.nextLine().split(" ");msgList.add(new Msg(Integer.parseInt(str[0]),Integer.parseInt(str[1])));}Boolean flag = false;int A = Integer.parseInt(scanner.nextLine());List<Msg> aSendList = msgList.stream().filter(msg -> msg.sendUser==A).collect(Collectors.toList());List<Integer> receiveFromA = aSendList.stream().map(msg -> {return msg.receiveUser;}).distinct().collect(Collectors.toList());List<Msg> otherSendList = msgList.stream().filter(msg -> msg.sendUser!=A).collect(Collectors.toList());List<Integer> aReceiveList = msgList.stream().filter(msg -> msg.receiveUser==A).map(msg -> {return msg.sendUser;}).collect(Collectors.toList());int M = aSendList.size()-aReceiveList.size();int L = aSendList.size();for (int i=0;i<otherSendList.size();i++){if (receiveFromA.contains(otherSendList.get(i).sendUser)){L-=1;}}if (M>10 || L>5){flag = true;System.out.print(flag + " " +   L + " " + M);}else {List<Msg> msgList1 = new ArrayList<>();for (int i = 0;i<receiveFromA.size();i++) {int Y = 0;int X = 0;int id = receiveFromA.get(i);Y = aReceiveList.stream().filter(m -> id ==m).collect(Collectors.toList()).size();X = aSendList.stream().filter(msg -> msg.receiveUser == id).collect(Collectors.toList()).size();if (Math.abs(X-Y)>5){flag = true;break;}}System.out.print(flag + " " +   L + " " + M);}}static  class  Msg{int sendUser;int receiveUser;Msg( int sendUser, int receiveUser){this.sendUser = sendUser;this.receiveUser = receiveUser;}}
}

6. 最长字符串的长度(二)(200)

在这里插入图片描述

package com.yue.test;import java.util.Scanner;/*** @Author: 夜雨* Create Date Time: 2024-09-02-8:26* Update Date Time:* @Version 1.0* @Description:* @see*/
public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.next();int result = findLongestSubstringLength(s);System.out.println(result);}// 定义一个私有静态方法,用于找出满足条件的最长子字符串的长度private static int findLongestSubstringLength(String s) {int n = s.length();int maxLength = 0;for (int i = 0; i < n; i++) {int countL = 0, countO = 0, countX = 0;for (int j = 0; j < n; j++) {// 计算当前字符的索引,处理环形字符串的情况int index = (i + j) % n;// 获取当前字符char ch = s.charAt(index);if (ch == 'l') countL++;else if (ch == 'o') countO++;else if (ch == 'x') countX++;if (countL % 2 == 0 && countO % 2 == 0 && countX % 2 == 0) {maxLength = Math.max(maxLength, j + 1);}}}return maxLength;}
}

相关文章:

刷题记录(2)

1. HWOD机试 - 模拟消息队列(100) package com.yue.test;import org.junit.Test;import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List;/*** Author: 夜雨* Date: 2021-12-08-10:31* Description:* Version 1.0*/ public…...

JVM中的GC过程

堆内存结构&#xff1a;在详细讨论GC过程之前&#xff0c;需要了解JVM堆内存的结构。JVM堆内存通常被分为新生代&#xff08;Young Generation&#xff09;和老年代&#xff08;Old Generation&#xff09;&#xff0c;其中新生代又进一步细分为Eden区&#xff08;Eden Space&a…...

Python实战项目:天气数据爬取+数据可视化(完整代码)_python爬虫实战

一、选题的背景 随着人们对天气的关注逐渐增加&#xff0c;天气预报数据的获取与可视化成为了当今的热门话题&#xff0c;天气预报我们每天都会关注&#xff0c;天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过…...

FFmpeg源码:compute_frame_duration函数分析

一、compute_frame_duration函数的定义 compute_frame_duration函数定义在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0.1&#xff09;的源文件libavformat/demux.c中&#xff1a; /*** Return the frame duration in seconds. Return 0 if not available.*/ stat…...

ARM 异常处理(21)

异常的流程&#xff1a; 首先&#xff1a; 在硬件上阶段&#xff1a; 这里是4大步3小步 然后是 异常处理&#xff1a; 这里主要是保存现场&#xff0c;进行异常处理 然后是 异常返回&#xff1a; 主要指 恢复现场&#xff0c; 再跳转回去。 首先硬件上&#xff…...

我开源了我的新闻网站项目

&#x1f389; 前言 暑假时写了一个Web项目&#xff0c;感觉做的还是有模有样的&#xff0c;不仅做了前端&#xff0c;还加了后端并连了数据库。最近也是将它开源了&#xff0c;一来是为了熟悉一下Github流程和Git使用命令&#xff0c;二来也是想和大家分享一下自己的成果&…...

LlamaIndex 使用 RouterOutputAgentWorkflow

LlamaIndex 中提供了一个 RouterOutputAgentWorkflow 功能&#xff0c;可以集成多个 QueryTool&#xff0c;根据用户的输入判断使用那个 QueryEngine&#xff0c;在做查询的时候&#xff0c;可以从不同的数据源进行查询&#xff0c;例如确定的数据从数据库查询&#xff0c;如果…...

设计模式学习-责任链模式

概念 使多个对象都有机会处理请求&#xff0c;从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象处理它为止. 代码编写 using UnityEngine; using System.Collections; public class ChainOfResp…...

【全网最全】2024年数学建模国赛B题31页完整建模过程+成品论文+matlab/python代码等(后续会更新

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 2024数学建模国赛B题 【全网最全】2024年数学建模国赛B题31页完整建模过程成品论文matlab/python代码等&#xff08;后续会更新「首先来看看目前已有的资料…...

第二十一届华为杯数学建模经验分享之资料分享篇

今天给大家分享一些数学建模的资料&#xff0c;通过这些资料的学习相信你们一定在比赛中获得好的成绩。今天分享的资料包括美赛和国赛的优秀论文集、研赛的优秀论文集、推荐数学建模的相关书籍、智能算法的学习PPT、python机器学习的书籍和数学建模经验分享与总结&#xff0c;其…...

使用 OpenSSL 创建自签名证书

mkdir -p /etc/nginx/conf.d/cert #2、创建私钥 openssl genrsa -des3 -out https.key 1024 提示输入字符&#xff1a; 输入字符&#xff1a;rancher [rootocean-app-1a-01 cert]# openssl genrsa -des3 -out https.key 1024 Generating RSA private key, 1024 bit long modulu…...

EmguCV学习笔记 VB.Net 9.1 VideoCapture类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…...

Rspack 1.0 发布了!

文章来源&#xff5c;Rspack Team 项目地址&#xff5c;https://github.com/web-infra-dev/rspack Rspack 是基于 Rust 编写的下一代 JavaScript 打包工具&#xff0c; 兼容 webpack 的 API 和生态&#xff0c;并提供 10 倍于 webpack 的构建性能。 在 18 个月前&#xff0c;我…...

【全网最全】2024年数学建模国赛E题超详细保奖思路+可视化图表+成品论文+matlab/python代码等(后续会更新

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024年数学建模国赛E题成品论文超详细保奖思路可视化图表matlab/python代码等&#xff08;后续会更新「首先来看看目前已有的资料&#xff0c;还…...

数智转型,看JNPF如何成为企业的必备工具

随着数字化转型的浪潮席卷全球&#xff0c;企业面临着前所未有的挑战与机遇。在这一过程中&#xff0c;低代码开发平台作为一种创新的软件开发方式&#xff0c;正逐渐成为企业实现快速迭代和敏捷开发的关键工具。JNPF作为一款领先的低代码开发平台&#xff0c;凭借其强大的功能…...

ArcGIS Pro 发布松散型切片

使用ArcGIS Pro发布松散型切片问题&#xff0c;有时候会出现切片方案写了松散型&#xff0c;但是自动切片完成后依然是紧凑型的问题&#xff0c;这时候可以采用手动修改然后再切片的方式。 1. 发布切片服务 选择手动切片方式 2. 手动修改服务的切片方案文件 修改cache服务…...

奖项再+1!通义灵码智能编码助手通过可信 AI 智能编码工具评估,获当前最高等级

阿里云的通义灵码智能编码助手参与中国信通院组织的可信AI智能编码工具首轮评估&#xff0c;最终获得 4 级评级&#xff0c;成为国内首批通过该项评估并获得当前最高评级的企业之一。 此次评估以《智能化软件工程技术和应用要求 第 2 部分&#xff1a;智能开发能力》为依据&…...

如何使用 yum 在 CentOS 6 上安装 nginx

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 状态 状态&#xff1a; 已弃用 本文涵盖的 CentOS 版本已不再受支持。如果您目前正在运行 CentOS 6 服务器&#xff0c;我们强烈建议升…...

F12抓包05:Network接口测试(抓包篡改请求)

课程大纲 使用线上接口测试网站演示操作&#xff0c;浏览器F12检查工具如何进行简单的接口测试&#xff1a;抓包、复制请求、篡改数据、发送新请求。 测试地址&#xff1a;https://httpbin.org/forms/post ① 抓包&#xff1a;鼠标右键打开“检查”工具&#xff08;F12&#xf…...

OPenCV结构分析与形状描述符(4)计算一个旋转矩形的四个顶点的函数boxPoints()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 找到一个旋转矩形的四个顶点。对于绘制旋转矩形很有用。 该函数找到一个旋转矩形的四个顶点。这个函数对于绘制矩形很有帮助。在C中&#xff0c;…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下&#xff0c;知识图谱凭借其高效的信息组织能力&#xff0c;正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合&#xff0c;探讨知识图谱开发的实现细节&#xff0c;帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

java高级——高阶函数、如何定义一个函数式接口类似stream流的filter

java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用&#xff08;Math::max&#xff09; 2 函数接口…...