最少步数归零问题 | 豆包MarsCode AI刷题

79 阅读1分钟

问题描述

小R拿到了一个长度为n的数组,其中每个元素都是一个正整数。小R发现每次可以删除某个数组中某个数的一位数字,这样可以逐步将所有数字变为0。他想知道,要将数组中所有数字都变为0,最少需要多少步?

例如:对于数字 103,小R可以选择删除第1位数字,将其变为 3;或者删除第2位数字,变为 13,又或者删除第3位数字,将其变为 10。最终目标是将所有数字都删除为0。


测试样例

样例1:

输入:n = 5,a = [10, 13, 22, 100, 30]
输出:7

样例2:

输入:n = 3,a = [5, 50, 505]
输出:4

样例3:

输入:n = 4,a = [1000, 1, 10, 100]
输出:4

思路及代码

可以看出这是非常简单的题目,只需要统计非0数字的个数即可得到最小步数。我的思路是用字符串解决,代码如下:

def solution(n: int, a: list) -> int:
    # write code here
    string=''
    for i in a:
        string += str(i)
    result = ''
    for char in string:
        if char != '0':
            result += char

    return len(result)

if __name__ == '__main__':
    print(solution(5, [10, 13, 22, 100, 30]) == 7)
    print(solution(3, [5, 50, 505]) == 4)
    print(solution(4, [1000, 1, 10, 100]) == 4)