2024-09-14:用go语言,给定一个正整数数组 nums,定义一个加密函数 encrypt(x),其将一个整数 x 的每一

举报
福大大架构师每日一题 发表于 2024/09/14 20:10:17 2024/09/14
【摘要】 2024-09-14:用go语言,给定一个正整数数组 nums,定义一个加密函数 encrypt(x),其将一个整数 x 的每一位数字都替换为 x 中的最大数字,然后返回加密后的数字。例如,encrypt(523) 会返回 555,encrypt(213) 会返回 333。现在需要计算数组中所有元素加密后的和,然后返回这个和。输入:nums = [10,21,31]。输出:66。解释:加密后...
2024-09-14:用go语言,给定一个正整数数组 nums,定义一个加密函数 encrypt(x),其将一个整数 x 的每一位数字都替换为 x 中的最大数字,然后返回加密后的数字。

例如,encrypt(523) 会返回 555,encrypt(213) 会返回 333。

现在需要计算数组中所有元素加密后的和,然后返回这个和。

输入:nums = [10,21,31]。

输出:66。

解释:加密后的元素为 [11,22,33] 。加密元素的和为 11 + 22 + 33 == 66 。

答案2024-09-14:

[chatgpt](https://chatbotsplace.com/?rc=nnNWSCJ7EP)

题目来自leetcode3079。

# 大体步骤如下:

1.对于每个输入的整数 x,从最右侧开始取每一位的数字,同时记录下最大的数字为 mx,并构建一个 base 变量,初始值为 0。

2.对 x 进行循环,每次取 x 的最后一位数字,更新 mx 和 base 的值,直到 x 为 0。

3.计算当前整数 x 加密后的值为 mx * base。

4.将每个加密后的整数值加到结果 ans 上。

5.遍历完所有输入整数后,返回结果 ans。

总体时间复杂度为 O(n*m),其中 n 是数组中整数的个数,m 是整数的位数。

额外空间复杂度为 O(1),因为只用了常数级别的额外空间。

# Go完整代码如下:

```go
package main

import (
"fmt"
)

func sumOfEncryptedInt(nums []int) (ans int) {
for _, x := range nums {
mx, base := 0, 0
for ; x > 0; x /= 10 {
mx = max(mx, x%10)
base = base*10 + 1
}
ans += mx * base
}
return
}

func main() {
nums := []int{10, 21, 31}
fmt.Println(sumOfEncryptedInt(nums))
}

```

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/920d63af602e48f8898f836d51cb1c54.png)


# Rust完整代码如下:

```rust
fn max(a: i32, b: i32) -> i32 {
    if a > b { a } else { b }
}

fn sum_of_encrypted_int(nums: &[i32]) -> i32 {
    let mut ans = 0;
    for &x in nums {
        let (mut mx, mut base) = (0, 0);
        let mut temp_x = x;
        while temp_x > 0 {
            mx = max(mx, temp_x % 10);
            base = base * 10 + 1;
            temp_x /= 10;
        }
        ans += mx * base;
    }
    ans
}

fn main() {
    let nums = vec![10, 21, 31];
    println!("{}", sum_of_encrypted_int(&nums));
}
```

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/09e38f4953f34751b9e6bfc477a2f127.png)

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。