【算法】1689. 十-二进制数的最少数目(java / c / c++ / python / go / rust)

简介: 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 。例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是。给你一个表示十进制整数的字符串 n ,返回和为 n 的 十-二进制数 的最少数目。

1689. 十-二进制数的最少数目:

如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 。例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是。

给你一个表示十进制整数的字符串 n ,返回和为 n 的 十-二进制数 的最少数目。

样例 1

输入:

  n = "32"

输出:

  3

解释:

  10 + 11 + 11 = 32

样例 2

输入:

  n = "82734"

输出:

  8

样例 3

输入:

  n = "27346209830709182346"

输出:

  9

提示

  • 1 <= n.length <= 105
  • n 仅由数字组成
  • n 不含任何前导零并总是表示正整数

分析

  • 这题具有欺骗性,其实根本不用考虑进位。靠进位的速度肯定不如直接就是本位增加快。
  • 由于十进制数每个数位上最大是9,而十-二进制数每个数位上最大是1。如果每个数位都不考虑进位,直接靠本数位的数值相加,那十进制数这个数位是几,就至少需要几个十-二进制数的数位去累加。
  • 所以整个十进制数最大的数位决定了至少需要几个十-二进制数相加。

题解

java

class Solution {
    public int minPartitions(String n) {
        char ans = '0';

        for (char c : n.toCharArray()) {
            if (c > ans) {
                ans = c;
            }
        }

        return ans - '0';
    }
}

c

int minPartitions(char * n){
    char ans = '0';

    for (; *n; ++n) {
        if (*n > ans) {
            ans = *n;
        }
    }

    return ans - '0';
}

c++

class Solution {
public:
    int minPartitions(string n) {
        char ans = '0';

        for (char c : n) {
            if (c > ans) {
                ans = c;
            }
        }

        return ans - '0';
    }
};

python

class Solution:
    def minPartitions(self, n: str) -> int:
        ans = '0'

        for c in n:
            if c > ans:
                ans = c

        return int(ans)

go

func minPartitions(n string) int {
    ans := '0'

    for _, c := range n {
        if c > ans {
            ans = c
        }
    }
    
    return int(ans - '0')
}

rust

impl Solution {
    pub fn min_partitions(n: String) -> i32 {
        n.chars().max().unwrap().to_digit(10).unwrap() as i32
    }
}

原题传送门


非常感谢你阅读本文~
放弃不难,但坚持一定很酷~
希望我们大家都能每天进步一点点~
本文由 二当家的白帽子:https://developer.aliyun.com/profile/sqd6avc7qgj7y 博客原创~

相关文章
|
1月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
2月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
183 26
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
181 0
|
2月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
216 0
|
2月前
|
机器学习/深度学习 编解码 算法
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
【机器人路径规划】基于迪杰斯特拉算法(Dijkstra)的机器人路径规划(Python代码实现)
315 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
【机器人路径规划】基于A*算法的机器人路径规划研究(Python代码实现)
441 4
|
2月前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于深度优先搜索(Depth-First-Search,DFS)算法的机器人路径规划(Python代码实现)
239 3
|
2月前
|
算法 机器人 定位技术
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
【机器人路径规划】基于流场寻路算法(Flow Field Pathfinding)的机器人路径规划(Python代码实现)
148 4
机器学习/深度学习 算法 自动驾驶
485 0

热门文章

最新文章

推荐镜像

更多