首页 > 编程语言 >【教3妹学编程-算法题】需要添加的硬币的最小数量

【教3妹学编程-算法题】需要添加的硬币的最小数量

时间:2023-12-09 21:31:42浏览次数:65  
标签:数字 硬币 int 编程 最小 数值 妹学 大于 平衡

【教3妹学编程-算法题】需要添加的硬币的最小数量_数位

3妹:2哥2哥,你有没有看到新闻, 有人中了2.2亿彩票大奖!
2哥 : 看到了,2.2亿啊, 一生一世也花不完。
3妹:为啥我就中不了呢,不开心呀不开心。
2哥 : 得了吧,你又不买彩票,还是脚踏实地的好~
3妹:小富靠勤,中富靠德,大富靠命, 可能是我命不好。
2哥 : 哎,想我口袋只有几个硬币,叮咚作响。
3妹:说到硬币, 我今天看到一个关硬币的题目,让我也来考考你吧~

【教3妹学编程-算法题】需要添加的硬币的最小数量_数位_02

 1题目: 

如果整数  x 满足:对于每个数位 d ,这个数位 恰好 在 x 中出现 d 次。那么整数 x 就是一个 数值平衡数 。

给你一个整数 n ,请你返回 严格大于 n 的 最小数值平衡数 。

示例 1:

输入:n = 1
输出:22
解释:
22 是一个数值平衡数,因为:

  • 数字 2 出现 2 次
    这也是严格大于 1 的最小数值平衡数。
    示例 2:

输入:n = 1000
输出:1333
解释:
1333 是一个数值平衡数,因为:

  • 数字 1 出现 1 次。
  • 数字 3 出现 3 次。
    这也是严格大于 1000 的最小数值平衡数。
    注意,1022 不能作为本输入的答案,因为数字 0 的出现次数超过了 0 。
    示例 3:

输入:n = 3000
输出:3133
解释:
3133 是一个数值平衡数,因为:

  • 数字 1 出现 1 次。
  • 数字 3 出现 3 次。
    这也是严格大于 3000 的最小数值平衡数。

提示:

0 <= n <= 10^6

 2思路: 

【教3妹学编程-算法题】需要添加的硬币的最小数量_java代码_03

题目给一个整数 n ,要求返回严格大于 n 的最小数值平衡数,我们直接按照题目的要求进行模拟即可。

观察到 0<=n<=10^6 , 我们可能返回的数值平衡数最大是 1224444,这个范围可以在时间要求内找到答案。

我们依次枚举大于 n 的整数,统计所有数字的出现频数,判断是否是数值平衡数即可。

 3java代码: 

class Solution {
    public int nextBeautifulNumber(int n) {
        for (int i = n + 1; i <= 1224444; ++i) {
            if (isBalance(i)) {
                return i;
            }
        }
        return -1;
    }


    private boolean isBalance(int x) {
        int[] count = new int[10];
        while (x > 0) {
            count[x % 10]++;
            x /= 10;
        }
        for (int d = 0; d < 10; ++d) {
            if (count[d] > 0 && count[d] != d) {
                return false;
            }
        }
        return true;
    }
}

标签:数字,硬币,int,编程,最小,数值,妹学,大于,平衡
From: https://blog.51cto.com/u_6813689/8752035

相关文章

  • 用元编程来判断STL类型
      在此之前,先来回顾元编程当中的一个重要概念。template<typename_Tp,_Tp__v>structintegral_constant{staticconstexpr_Tpvalue=__v;typedef_Tpvalue_type;typedefintegral_constant<......
  • 深入探究 Python 异步编程:利用 asyncio 和 aiohttp 构建高效并发应用
    在现代编程中,异步编程已成为处理高并发和IO密集型任务的重要方式。Python提供了强大的异步编程支持,包括asyncio库和aiohttp等框架。本文将深入探讨异步编程的概念,以及在Python中如何利用异步框架来实现高效的并发编程。1.异步编程概念异步编程允许程序在等待IO操作完成时......
  • 上机编程[目录树收缩显示]学习交流
    1.    题目今天学习2022-11-25专业级第二题。在一个目录树中(假设都是目录),过深的目录路径不容易展示,为了提升用户体验,需要对目录进行收缩展示,求收缩后某一深度的目录个数。如图所示,原目录树及收缩后示意:1.  root                   root2.  ......
  • 使用Java实现面向对象编程 第八章 File IO 总结笔记
    java里操作文件1.第一步一定是获得这个文件(获得的文件,你是无法解析获得里面的内容,约等于获得冰。你只能知道大小颜色等。外表能够获取信息.)。2.第二步获得这个文件将这个文件转换成流。然后从这个io流里读取数据io流里又分为字符流(专门处理文字)字节流(专门处理2进制等文件)3.......
  • MAC安装编程环境的一些事项
    jdk安装java默认安装在如下目录下(不同版本不同目录)/Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/Home环境变量配置sudochmodo+w/etc/profilevi /etc/profile加入下面内容JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_361.jdk/Contents/Home......
  • web服务器-socket编程
    客户端#include<stdio.h>#include<stdlib.h>#include<string.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<netinet/ip.h>#include<arpa/inet.h>#include<unistd.h>#inc......
  • 实验四 Web服务器1-socket编程
    一、代码#include<netinet/in.h>#include<arpa/inet.h>#include<netdb.h>#include<sys/types.h>#include<sys/socket.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<stdio.h>#de......
  • 实验四 Web服务器1-socket编程
    实验四Web服务器1-socket编程基于华为鲲鹏云服务器CentOS中(或Ubuntu),使用LinuxSocket实现:time服务器的客户端服务器,提交程序运行截图echo服务器的客户端服务器,提交程序运行截图,服务器把客户端传进来的内容加入“服务器进程pid你的学号姓名echo:”返回给客户端服务器部......
  • 2023-2024-1 20211327 实验四 Web服务器1-socket编程
    实验四Web服务器1-socket编程time服务器的客户端服务器time_server.c#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#include<arpa/inet.h>#include<sys/socket.h>#include<sys/types.h>#include<s......
  • Web服务器-socket编程
    代码#include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<netinet/in.h>#include<stdlib.h>#include<errno.h>#include<string.h>#include<netdb.h>#include<arpa/inet.h>#includ......