小O有一个正整数 x ,他希望删除 x 中的一些数位,使得 x 变为 5 的倍数,请问最少需要删除多少个数位呢?
每个测试文件均包含多个测试点。第一行输入一个整数 T(1≤ T≤ 10^5) 代表测试数据组数,每组测试数据描述如下: 第一行输入一个正整数 x(1 ≤ x ≤ 10^9) ,表示小O询问的数字 x 。
对于每一个测试点,在一行上输出一个正整数代表最少的删除数位数。
3 154 100 1
1 0 1
考点:字符串 · 贪心
数据规模 T ≤ 1e5 | 限制 1 秒 / 256MB | 标准输入输出
推荐方向:贪心
每一步都取当前最优,靠问题性质保证局部最优能拼成全局最优。
思路框架(贪心 通法 · 非本题专属)
实现要点:贪心题关键在于排序规则:按什么关键字排序决定了策略是否正确。
复杂度:时间 O(n log n)(含排序) | 空间 O(1) ~ O(n)
该范式的通法易错点
对照本题
样例 1:输入 3 / 154 / 100 / 1 → 输出 1 / 0 / 1
三个数据分别删除为:
15, 100, 0
(可以全部删除,然后 x 视为 0。)
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-OPPO-数据分析岗笔试。