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

23年阿里淘天笔试题 | 卡码网模拟

第一题

  1. 字典序最小的 01 字符串

解题思路:

模拟,统计遇到的连续的1的个数记为num,直到遇到0,如果k>=num,直接将第一个1置为0,将遇到的0置为1,否则将第一个1偏置num-k个位置置为0,遇到的0置为1。

原理是遇到的1,基本都要往后移。有多少个k就可以往后移多少个1,而字典序最小又要求我们优先移动前面的

#include <iostream>
#include <string>
using namespace std;int main() {int n, k;cin >> n >> k;string s;cin >> s;int num = 0;int start = 0;for (int i = 0; i < n; i++) {if (s[i] == '0') continue;num = 0;start = i;num++;while (i + 1 < n && s[i+1] != '0') {num++; i++;}if (i + 1 >= n) break;if (k >= num) {s[start] = '0'; s[start + num] = '1';k -= num;i = start;}else {s[start + num - k] = '0'; s[start + num] = '1';k = 0; break;}}cout << s << endl;
}
import java.util.*;class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int k = sc.nextInt();sc.nextLine();String str = sc.nextLine();char[] ch = str.toCharArray();int num = 0;int start = 0;for (int i = 0; i < n; i++) {if (ch[i] == '0') continue;num = 0;start = i;num++;while (i + 1 < n && ch[i+1] != '0') {num++; i++;}if (i + 1 >= n) break;if (k >= num) {ch[start] = '0'; ch[start + num] = '1';k -= num;i = start;}else {ch[start + num - k] = '0'; ch[start + num] = '1';k = 0; break;}}StringBuilder sb = new StringBuilder();for (int i = 0; i < n; i++) sb = sb.append(ch[i]);System.out.println(sb.toString());}
}

第二题

  1. 数组子序列的排列

解题思路:

先统计从1开始连续的数的个数和每个数在数组中出现的个数,只统计100000以下的数出现的个数,最后计算规律为n1 + n1n2 + n1n2n3 + … + n1n2…*nm

#include<iostream>
#include <vector>
using namespace std;const long long mod = 1000000000 + 7;int main() {int n;cin >> n;vector<long long> nums(n, 0);vector<long long> num(n, 0);for (int i = 0; i < n; i++) {cin >> nums[i];if (nums[i] < 100000)num[nums[i]-1]++;}int b = 0;for (int i = 0; i < n; i++) {if (num[i] == 0) {b = i; break;}}long long sum = 0;for (int i = 0; i < b; i++) {long long sum_in = 1;for (int j = 0; j <= i; j++) {sum_in *= num[j];sum_in %= mod;}sum += sum_in;sum %= mod;}sum %= mod;cout << sum << endl;
}
import java.util.*;class Main {public static void main(String[] args) {long mod = 1000000007L;Scanner sc = new Scanner(System.in);int n = sc.nextInt();sc.nextLine();long[] nums = new long[n];long[] num = new long[n];for (int i = 0; i < n; i++) {nums[i] = sc.nextLong();if (nums[i] < 100000)num[(int)nums[i]-1]++;}int b = 0;for (int i = 0; i < n; i++) {if (num[i] == 0) {b = i; break;}}long sum = 0;for (int i = 0; i < b; i++) {long sum_in = 1;for (int j = 0; j <= i; j++) {sum_in *= num[j];sum_in %= mod;}sum += sum_in;sum %= mod;}sum %= mod;System.out.println(sum);}
}

第三题

  1. 传送树

解题思路

用dfs扫描一遍邻接表即可

#include <iostream>
#include <list>
#include <vector>
#include <climits>
using namespace std;int dfs(vector<int>& ans, vector<list<int>>& tree, int index) {if (tree[index].size() == 0) {ans[index] = 1;return index;}int ret = INT_MAX;for (int t : tree[index]) ret = min(dfs(ans, tree, t), ret);ans[index] = ans[ret] + 1;return min(index, ret);
}int main() {int n; cin >> n;vector<list<int>> tree(n, list<int>(0));vector<int> ans(n, 0);int u, v;for (int i = 0; i < n - 1; i++) {cin >> u >> v;tree[u-1].push_back(v-1);}dfs(ans, tree, 0);for (int index = 0; index < n; index++) {cout << ans[index] << ' ';}cout << endl;
}
import java.util.*;class Main {public static int dfs(int[] ans, List<Integer>[] tree, int index) {if (tree[index].size() == 0) {ans[index] = 1;return index;}int ret = Integer.MAX_VALUE;for (int t : tree[index]) ret = Math.min(dfs(ans, tree, t), ret);ans[index] = ans[ret] + 1;return Math.min(index, ret);}public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();List<Integer>[] tree = new List[n];for (int i = 0; i < n; i++) tree[i] = new ArrayList<>();int[] ans = new int[n];int u, v;for (int i = 0; i < n - 1; i++) {u = sc.nextInt();v = sc.nextInt();tree[u-1].add(v-1);}dfs(ans, tree, 0);for (int index = 0; index < n; index++) {System.out.print(ans[index] + " ");}System.out.println();}
}

相关文章:

23年阿里淘天笔试题 | 卡码网模拟

第一题 字典序最小的 01 字符串 解题思路&#xff1a; 模拟&#xff0c;统计遇到的连续的1的个数记为num&#xff0c;直到遇到0&#xff0c;如果k>num&#xff0c;直接将第一个1置为0&#xff0c;将遇到的0置为1&#xff0c;否则将第一个1偏置num-k个位置置为0&#xff0…...

【SpringBoot】单元测试之测试Service方法

测试Service方法 SpringBootTest public class UserServiceTest{ Autowired private UserService userService; Test public void findOne () throws Exception{ Assert.assertEquals("1002",userService.findOne()); } } 测试Controller接口方法 Runwith(S…...

剪辑师和小白都能用的AI解说神器,一键把短剧变解说视频-手把手教程-2024

为什么短剧、综艺、电影和电视剧需要以解说形式在抖音、快手和TikTok推广&#xff1f; 此类专业影视内容由于时间过长、平台用户的习惯、算法去重需求和版权问题&#xff0c;专业的影视综节目通常需要用解说类型的视频来不断重复的宣发剧集。具体的原因如下&#xff1a; 1. 视…...

我去,怎么http全变https了

项目场景&#xff1a; 在公司做的一个某地可视化项目。 部署采用的是前后端分离部署&#xff0c;图片等静态资源请求一台minio服务器。 项目平台用的是http 图片资源的服务器用的是https 问题描述 在以https请求图片资源时&#xff0c;图片请求成功报200。 【现象1】: 继图…...

IDEA的详细设置

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试&#xff08;Debug&#xff09; 第七章 …...

为什么Spring选择使用容器来管理对象,而不是直接使用new

为什么Spring选择使用容器来管理对象&#xff0c;而不是直接使用new 在Java应用程序开发中&#xff0c;对象的创建和管理是一项基础且关键的任务。传统上&#xff0c;开发者习惯于使用new关键字直接在代码中实例化对象。然而&#xff0c;随着应用程序规模的扩大和复杂度的增加…...

腾讯云发送短信验证码

1、在腾讯云平台中 开通短信服务 2、发送短信 2.1引用jar包 <dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java-sms</artifactId><version>3.1.1043</version> </dependency>2.2 发送短…...

嵌入式人工智能(13-基于树莓派4B的指纹识别-AS608)

1、指纹识别模块 指纹识别是一种生物识别技术&#xff0c;通过分析人体指纹的纹理特征来进行身份验证。每个人的指纹纹路都是独一无二的&#xff0c;通过将指纹与事先存储的指纹数据库进行比对&#xff0c;可以确定是否为同一人。指纹识别在安全领域得到广泛应用&#xff0c;例…...

【Vue】`v-on` 指令详解:事件绑定与处理的全面指南

文章目录 一、v-on 指令概述缩写语法 二、v-on 的基本用法1. 绑定方法2. 内联处理器 三、v-on 指令的高级用法1. 事件修饰符.stop.prevent.capture.self.once 2. 按键修饰符.enter自定义按键修饰符 3. 系统修饰符 四、v-on 指令的实际应用1. 表单处理模板部分 (<template>…...

【Spark On Hive】—— 基于电商数据分析的项目实战

文章目录 Spark On Hive 详解一、项目配置1. 创建工程2. 配置文件3. 工程目录 二、代码实现2.1 Class SparkFactory2.2 Object SparkFactory Spark On Hive 详解 本文基于Spark重构基于Hive的电商数据分析的项目需求&#xff0c;在重构的同时对Spark On Hive的全流程进行详细的…...

哪种SSL证书可以快速签发保护http安全访问?

用户访问网站&#xff0c;经常会遇到访问http网页时&#xff0c;提示网站不安全或者不是私密连接的提示&#xff0c;因为http是使用明文传输&#xff0c;数据传输中可能被篡改&#xff0c;数据不被保护&#xff0c;通常需要SSL证书来给数据加密。 SSL证书的签发速度&#xff0…...

深入探究理解大型语言模型参数和内存需求

概述 大型语言模型 取得了显著进步。GPT-4、谷歌的 Gemini 和 Claude 3 等模型在功能和应用方面树立了新标准。这些模型不仅增强了文本生成和翻译&#xff0c;还在多模态处理方面开辟了新天地&#xff0c;将文本、图像、音频和视频输入结合起来&#xff0c;提供更全面的 AI 解…...

maven 私服搭建(tar+docker)

maven私服搭建 一、linux安装nexus1、工具下载 二、 docker 搭建nexus1、镜像下载创建目录2、运行nexus3、访问确认&#xff0c;修改默认密码&#xff0c;禁用匿名用户登录4、创建仓库5、创建hostd仓库6、创建Blob Stores7、创建docker私服1、创建proxy仓库2、创建hotsed本地仓…...

银行业务知识全篇(财务知识、金融业务知识)

第一部分 零售业务 1.1 储蓄业务 4 1.1.1 普通活期储蓄(本外币) 4 1.1.2 定期储蓄(本外币) 5 1.1.3 活期一本通 9 1.1.4 定期一本通 10 1.1.5 电话银行 11 1.1.6 个人支票 11 1.1.7 通信存款 13 1.1.8 其他业务规…...

解决ElasticJob项目重启ZooKeeper注册冲突以及zkCli删除目录

解决ElasticJob项目重启ZooKeeper注册冲突以及zkCli删除目录 背景 在现代化的分布式调度系统中&#xff0c;ElasticJob 是一个非常流行的选择。它利用 ZooKeeper 作为注册中心来管理任务分片。然而&#xff0c;有时在项目重启时&#xff0c;会遇到 ZooKeeper 注册冲突的问题&…...

【EI检索】第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)

一、会议信息 大会官网&#xff1a;www.mvipit.org 官方邮箱&#xff1a;mvipit163.com 会议出版&#xff1a;IEEE CPS 出版 会议检索&#xff1a;EI & Scopus 检索 会议地点&#xff1a;河北张家口 会议时间&#xff1a;2024 年 9 月 13 日-9 月 15 日 二、征稿主题…...

vscode通过ssh链接远程服务器上的docker

目录 1 编译docker image1.1 编译镜像1.2 启动镜像 2 在docker container中启动ssh服务2.1 确认是否安装ssh server2.2 修改配置文件2.3 启动ssh服务 3 生成ssh key4 添加ssh公钥到docker container中5 vscode安装插件Remote - SSH6 在vscode中配置 1 编译docker image 一般来…...

使用NIFI连接瀚高数据库_并从RestFul的HTTP接口中获取数据局_同步到瀚高数据库中---大数据之Nifi工作笔记0067

首先来看一下如何,使用NIFI 去连接瀚高数据库. 其实,只要配置好了链接的,连接字符串,和驱动,任何支持JDBC的数据库都可以连接的. 首先我们用一个ListDatabaseTables处理器,来连接瀚高DB 主要是看这里,连接地址,以及驱动,还有驱动的位置 这个是数据连接的配置 jdbc:highgo://…...

IDEA的工程与模块管理

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试&#xff08;Debug&#xff09; 第七章 …...

[M前缀和] lc3096. 得到更多分数的最少关卡数目(前缀和+思维)

文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接&#xff1a;3096. 得到更多分数的最少关卡数目 2. 题目解析 比较有意思的题目&#xff0c;仔细读题后发现解题没啥难度&#xff0c;但是如何写好、写的更简洁需要注意下&#xff1a; 思路&#xff1a; 数据量 1e5&#…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

django blank 与 null的区别

1.blank blank控制表单验证时是否允许字段为空 2.null null控制数据库层面是否为空 但是&#xff0c;要注意以下几点&#xff1a; Django的表单验证与null无关&#xff1a;null参数控制的是数据库层面字段是否可以为NULL&#xff0c;而blank参数控制的是Django表单验证时字…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...