23年阿里淘天笔试题 | 卡码网模拟
第一题
- 字典序最小的 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开始连续的数的个数和每个数在数组中出现的个数,只统计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);}
}
第三题
- 传送树
解题思路
用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 字符串 解题思路: 模拟,统计遇到的连续的1的个数记为num,直到遇到0,如果k>num,直接将第一个1置为0,将遇到的0置为1,否则将第一个1偏置num-k个位置置为0࿰…...
【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推广? 此类专业影视内容由于时间过长、平台用户的习惯、算法去重需求和版权问题,专业的影视综节目通常需要用解说类型的视频来不断重复的宣发剧集。具体的原因如下: 1. 视…...
我去,怎么http全变https了
项目场景: 在公司做的一个某地可视化项目。 部署采用的是前后端分离部署,图片等静态资源请求一台minio服务器。 项目平台用的是http 图片资源的服务器用的是https 问题描述 在以https请求图片资源时,图片请求成功报200。 【现象1】: 继图…...
IDEA的详细设置
《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试(Debug) 第七章 …...
为什么Spring选择使用容器来管理对象,而不是直接使用new
为什么Spring选择使用容器来管理对象,而不是直接使用new 在Java应用程序开发中,对象的创建和管理是一项基础且关键的任务。传统上,开发者习惯于使用new关键字直接在代码中实例化对象。然而,随着应用程序规模的扩大和复杂度的增加…...
腾讯云发送短信验证码
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、指纹识别模块 指纹识别是一种生物识别技术,通过分析人体指纹的纹理特征来进行身份验证。每个人的指纹纹路都是独一无二的,通过将指纹与事先存储的指纹数据库进行比对,可以确定是否为同一人。指纹识别在安全领域得到广泛应用,例…...
【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的电商数据分析的项目需求,在重构的同时对Spark On Hive的全流程进行详细的…...
哪种SSL证书可以快速签发保护http安全访问?
用户访问网站,经常会遇到访问http网页时,提示网站不安全或者不是私密连接的提示,因为http是使用明文传输,数据传输中可能被篡改,数据不被保护,通常需要SSL证书来给数据加密。 SSL证书的签发速度࿰…...
深入探究理解大型语言模型参数和内存需求
概述 大型语言模型 取得了显著进步。GPT-4、谷歌的 Gemini 和 Claude 3 等模型在功能和应用方面树立了新标准。这些模型不仅增强了文本生成和翻译,还在多模态处理方面开辟了新天地,将文本、图像、音频和视频输入结合起来,提供更全面的 AI 解…...
maven 私服搭建(tar+docker)
maven私服搭建 一、linux安装nexus1、工具下载 二、 docker 搭建nexus1、镜像下载创建目录2、运行nexus3、访问确认,修改默认密码,禁用匿名用户登录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删除目录 背景 在现代化的分布式调度系统中,ElasticJob 是一个非常流行的选择。它利用 ZooKeeper 作为注册中心来管理任务分片。然而,有时在项目重启时,会遇到 ZooKeeper 注册冲突的问题&…...
【EI检索】第二届机器视觉、图像处理与影像技术国际会议(MVIPIT 2024)
一、会议信息 大会官网:www.mvipit.org 官方邮箱:mvipit163.com 会议出版:IEEE CPS 出版 会议检索:EI & Scopus 检索 会议地点:河北张家口 会议时间: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的断点调试(Debug) 第七章 …...
[M前缀和] lc3096. 得到更多分数的最少关卡数目(前缀和+思维)
文章目录 1. 题目来源2. 题目解析 1. 题目来源 链接:3096. 得到更多分数的最少关卡数目 2. 题目解析 比较有意思的题目,仔细读题后发现解题没啥难度,但是如何写好、写的更简洁需要注意下: 思路: 数据量 1e5&#…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
Vue3中的computer和watch
computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...
