2024 ccfcsp认证打卡 2023 05 01 重复局面

2023 05 01 重复局面

  • 题目
  • 题解1
  • 题解2
  • 区别:
    • 数据存储方式:
    • 时间复杂度:
    • 空间复杂度:
  • 总结:

题目

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

题解1

import java.util.*;public class Main {public static void main(String[] args) {Scanner input = new Scanner(System.in);int n = input.nextInt();  // 输入n,表示字符串数量HashMap<String, Integer> strs = new HashMap<>();  // 创建一个HashMap,用于存储字符串及其出现次数for (int i = 0; i < n; i++) {String str = "";  // 初始化空字符串用于存储当前输入的字符串// 依次输入8个字符串,并拼接成一个完整的字符串for (int j = 0; j < 8; j++) {String s = input.next();str += s;}if (i == 0) {// 如果是第一个字符串,直接输出1,并将该字符串放入HashMap中System.out.println(1);strs.put(str, 1);} else {if (strs.containsKey(str)) {// 如果HashMap中已存在该字符串,更新其出现次数strs.put(str, strs.get(str) + 1);} else {// 如果HashMap中不存在该字符串,将其放入HashMap,并设置出现次数为1strs.put(str, 1);}// 输出该字符串出现的次数System.out.println(strs.get(str));}}}
}

题解2

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();  // 输入n,表示字符串数量String res[] = new String[n];  // 用于存储输入的字符串int j = -1, count = 1;// 获取输入for (int i = 0; i < 8 * n; i++) {if (i % 8 == 0) {j++;  // 每8个字符换行存储到res数组中}res[j] += sc.next();  // 读取下一个字符串,并拼接到对应位置}System.out.println(1);  // 第一个字符串输出1,因为第一个肯定是唯一的j = 0;// 判断输出for (int i = 1; i < n; i++) {for (j = 0; j < i; j++) {if (res[i].equals(res[j])) {count++;  // 如果与之前的字符串相同,计数加1}}System.out.println(count);  // 输出该字符串出现的次数count = 1;  // 重置计数器为1,准备下一个字符串的判断}}
}

区别:

数据存储方式:

题解1中使用了HashMap,将每个字符串作为键,出现次数作为值,实现了O(1)时间复杂度的查找和更新。
题解2中使用了一个String数组,每个位置存储一个字符串,通过比较字符串的方式来统计出现次数。这样的方法比较低效,因为每次查找都需要遍历整个数组。

时间复杂度:

题解1中使用HashMap,查找和更新的时间复杂度都是O(1),因此整体时间复杂度是O(n)。
题解2中使用了两个嵌套的循环来比较字符串,时间复杂度为O(n^2),效率较低。

空间复杂度:

题解1中HashMap的空间复杂度取决于不同的字符串数量,最坏情况下是O(n)。
题解2中使用了一个String数组,空间复杂度也取决于不同的字符串数量,最坏情况下也是O(n)。

总结:

题解1使用HashMap的方式更加高效,可以快速统计每个字符串出现的次数,而且代码相对简洁。
题解2虽然实现了相同的功能,但由于字符串比较的方式导致时间复杂度高,适用于数据量较小的情况。

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

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

相关文章

Stream 流和 Lambda 组装复杂父子树形结构

在最近的开发中&#xff0c;遇到了两个类似的需求&#xff1a;都是基于 Stream 的父子树形结构操作&#xff0c;返回 List 集合对象给前端。于是在经过需求分析和探索实践后有了新的认识&#xff0c;现在拿出来和大家作分享交流。 一般来说完成这样的需求大多数人会想到递归&a…

面试题 之 vue

1.vue里怎样实现双向数据绑定&#xff1f; Viewmodel 中的Domlisteners 工具会帮我们检测页面上Dom元素的变化&#xff0c;如果有变化&#xff0c;则更改Model中的数据&#xff0c;更新model中的数据时&#xff0c;数据事件绑定工具会帮我们更新页面中的Dom元素 2.Vue的响应式原…

3d代理模型怎么转换成标准模型---模大狮模型网

在当今的虚拟世界中&#xff0c;3D建模技术被广泛运用于游戏开发、电影制作、工业设计等领域。在3D建模过程中&#xff0c;有时会遇到需要将代理模型转换成标准模型的情况。模大狮将从理论和实践两方面&#xff0c;介绍如何将3D代理模型转换成标准模型&#xff0c;以帮助读者更…

【MySQL】事务是什么?事务的特性又是什么?

文章目录 ✍事务是什么&#xff1f;✍事务的特性&#xff08;四个&#xff09;✍事务并发时出现的问题✍事务的隔离性 ✍事务是什么&#xff1f; 事务是由一个或多个SQL语句构成的&#xff0c;在事务中&#xff0c;这些的SQL不可分割&#xff0c;是一个整体&#xff0c;整个事…

C++万物起源:类与对象(三)拷贝构造、赋值重载

目录 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 1.2拷贝构造的实现 1.3默认构造函数 1.4拷贝构造函数典型调用场景 二、赋值运算符重载 2.1赋值运算符重载的格式 一、拷贝构造函数 1.1拷贝构造函数的概念与特征 在c语言语法中&#xff0c;我们可以将一个变量赋值给…

vue实现导出列表为xlsx文件

1.安装依赖 npm install --save xlsx file-saver 2.引入依赖 import FileSaver from file-saver; import * as XLSX from xlsx; 3.代码实现 <el-button type"primary" click"exportData">导出数据</el-button><el-tableid"table_ex…

怎样在Linux搭建NTP服务器

搭建 NTP&#xff08;Network Time Protocol&#xff09;服务器可以帮助你在局域网内提供时间同步服务&#xff0c;让网络中的设备都使用统一的时间。以下是在 Linux 系统上搭建 NTP 服务器的基本步骤&#xff1a; 安装 NTP 服务器软件&#xff1a; 在终端中执行以下命令安装 N…

JavaSE阶段十组易混淆概念总结

目录 &#x1f4cc; & 与 && &#x1f4cc; this 与 super &#x1f4cc; 方法重载与重写 &#x1f4cc; 抽象类与接口 &#x1f4cc; "" 与 equals &#x1f4cc; String 与 StringBuffer &#x1f4cc; HashSet 与 HashMap &#x1f4cc; Coll…

【CANN训练营笔记】Atlas 200I DK A2体验手写数字识别模型训练推理

环境介绍 开发板&#xff1a;Huawei Atals 200I DK A2 内存&#xff1a;4G NPU&#xff1a;Ascend 310B4 CANN&#xff1a;7.0 准备环境 下载编译好的torch_npu wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/wanzutao/torch_npu-2.1.0rc1-cp39-cp39-linux_aarch…

烂笔头笔记:Windows 11下照片查看器显示偏色问题修复

本文出处&#xff1a;http://blog.csdn.net/chaijunkun/article/details/137278931&#xff0c;转载请注明。由于本人不定期会整理相关博文&#xff0c;会对相应内容作出完善。因此强烈建议在原始出处查看此文。 最近在研究HDR视频的截图算法&#xff0c;目的就是生成色彩正确…

基于Springboot + MySQL + Vue 大学新生宿舍管理系统 (含源码)

目录 &#x1f4da; 前言 &#x1f4d1;摘要 &#x1f4d1;操作流程 &#x1f4da; 系统架构设计 &#x1f4da; 数据库设计 &#x1f4ac; 管理员信息属性 &#x1f4ac; 学生信息实体属性 &#x1f4ac; 宿舍安排信息实体属性 &#x1f4ac; 卫生检查信息实体属性 &…

pytest--python的一种测试框架--接口测试

接口测试 工具&#xff1a; POSTMAN&#xff1b; 接口选择&#xff1a; 豆瓣电影&#xff0c;进制数据 POSTMAN下载&#xff1a; 1.POSTMAN官网&#xff1a;https://www.postman.com/products/&#xff1b; 2.点product选Download Postman 下载完之后双击打开就可以用的。…

Element-Plus日期选择组件封装农历日期

背景 在使用element-plus开发项目过程中&#xff0c;需要填入人员的生卒日期&#xff0c;经观察&#xff0c;对于大部分人来说&#xff0c;这类日期通常是农历日期&#xff0c;然而我们在系统建设过程中&#xff0c;对于日期字段&#xff0c;约定成俗的都会使用公历日期&#…

Lecture 1 - Introduction

Lecture 1 - Introduction MIT 6.824 Distributed Systems 1、概念预览 分布式系统需要考虑的因素&#xff1a; Parallelism &#xff1a;并行性Fault tolerence &#xff1a;容错性Physicial &#xff1a;不同系统之间物理距离引起的通信问题Security &#xff1a;不同的计…

封装一个vue3的公共组件

在Vue 3中&#xff0c;封装公共组件的场景包括但不限于以下几种情况&#xff1a; 重复使用的组件&#xff1a;如果你发现某个组件在多个地方重复使用&#xff0c;那么将其封装成公共组件是很有意义的。比如&#xff0c;页面中的各种表单控件&#xff08;输入框、下拉框、日期选…

MySQL 数据学习笔记速查表(视图、存储过程、事务)

文章目录 十三、视图1、视图是什么&#xff1f;2、视图的特性&#xff1f;3、视图的作用&#xff1f;4、视图的用途&#xff1f;5、视图的使用&#xff1f;1、基本语法2、创建视图3、调用视图4、视图练习(1) 利用试图简化复杂的联结(2) 利用视图重新格式化检索出的数据(3) 利用…

Django详细教程(一) - 基本操作

文章目录 前言一、安装Django二、创建项目1.终端创建项目2.Pycharm创建项目&#xff08;专业版才可以&#xff09;3.默认文件介绍 三、创建app1.app介绍2.默认文件介绍 四、快速上手1.写一个网页步骤1&#xff1a;注册app 【settings.py】步骤2&#xff1a;编写URL和视图函数对…

Node爬虫:原理简介

在数字化时代&#xff0c;网络爬虫作为一种自动化收集和分析网络数据的技术&#xff0c;得到了广泛的应用。Node.js&#xff0c;以其异步I/O模型和事件驱动的特性&#xff0c;成为实现高效爬虫的理想选择。然而&#xff0c;爬虫在收集数据时&#xff0c;往往面临着诸如反爬虫机…

OSPF-基础、虚链路、overflow,缺省

OSPF 1、OSPF基础 2、区域内的路由计算 3、区域间的路由计算&#xff08;矢量&#xff09;&#xff08;区域间的防环原则&#xff09; 3.1、非骨干区域都与骨干区域相连。 3.2、骨干区域不会接收非骨干的3类LSA。 3.3、无论COST&#xff0c;1类LSA总是由于3类LSA。 ABR&…

快消企业数字化转型实战解析:探寻未来增长新动力

2024年&#xff0c;快消行业正站在数字化转型的风口浪尖。 “今年是过去十年最差的一年&#xff0c;但却可能是未来十年最好的一年。”这句话几乎成为了今年的流行语。 但是这句话是情绪&#xff0c;不是事实。未来十年&#xff0c;中国会成为全球最大的消费品市场&#xff0…