首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >2025-11-01:数位和等于下标的最小下标。用go语言,给定一个整数数组 nums,找出最小的索引 i(索引从 0 开始),

2025-11-01:数位和等于下标的最小下标。用go语言,给定一个整数数组 nums,找出最小的索引 i(索引从 0 开始),

作者头像
福大大架构师每日一题
发布2025-12-19 08:41:04
发布2025-12-19 08:41:04
370
举报

2025-11-01:数位和等于下标的最小下标。用go语言,给定一个整数数组 nums,找出最小的索引 i(索引从 0 开始),使得把 nums[i] 按位拆分后各位数字相加得到的和等于 i。如果不存在这样的索引,则返回 -1。

1 <= nums.length <= 100。

0 <= nums[i] <= 1000。

输入:nums = [1,3,2]。

输出:2。

解释:

nums[2] = 2,其数位和等于 2 ,与其下标 i = 2 相等。因此,输出为 2 。

题目来自力扣3550。

分步骤描述过程

  1. 1. 初始化阶段
    • • 函数接收一个整数数组 nums 作为输入
    • • 准备遍历数组中的元素,从索引 0 开始
  2. 2. 遍历限制
    • • 只遍历数组的前 min(len(nums), 28) 个元素
    • • 这意味着最多只检查前 28 个元素,即使数组长度超过 28
    • • 对于示例 [1,3,2],数组长度为 3,所以会检查所有 3 个元素
  3. 3. 逐个元素处理
    • • 对于每个索引 i 和对应的元素 x
      • 计算数位和
        • • 初始化求和变量 s = 0
        • • 通过循环将 x 反复除以 10,每次取余数得到最低位数字
        • • 将每位数字累加到 s
        • • 例如:对于数字 123,计算过程:123%10=3 → s=3,12%10=2 → s=5,1%10=1 → s=6
      • 条件检查
        • • 比较数位和 s 与当前索引 i
        • • 如果相等,立即返回当前索引 i 作为结果
  4. 4. 终止条件
    • • 如果在前 28 个元素中找到满足条件的索引,立即返回该索引
    • • 如果遍历完前 28 个元素仍未找到满足条件的索引,返回 -1
  5. 5. 示例执行过程(nums = [1,3,2]):
    • • i=0, x=1:数位和=1,1≠0,继续
    • • i=1, x=3:数位和=3,3≠1,继续
    • • i=2, x=2:数位和=2,2=2,匹配成功,返回 2

复杂度分析

总的时间复杂度:O(1)

  • • 由于最多只检查 28 个元素,且每个数字的数位和计算最多需要 O(d) 时间(d 是数字的位数)
  • • 由于数字最大为 1000(最多 4 位数),且检查的元素数量固定为 28,因此总时间是常数级别的

总的额外空间复杂度:O(1)

  • • 只使用了固定数量的变量(i, x, s),不随输入规模增长
  • • 没有使用额外的数据结构或递归调用

Go完整代码如下:

代码语言:javascript
复制
package main

import (
    "fmt"
)

func smallestIndex(nums []int)int {
    for i, x := range nums[:min(len(nums), 28)] {
        s := 0
        for ; x > 0; x /= 10 {
            s += x % 10
        }
        if s == i {
            return i
        }
    }
    return-1
}

func main() {
    nums := []int{1, 3, 2}
    result := smallestIndex(nums)
    fmt.Println(result)
}

Python完整代码如下:

代码语言:javascript
复制
# -*-coding:utf-8-*-

defsmallest_index(nums):
    for i inrange(min(len(nums), 28)):
        x = nums[i]
        s = 0
        while x > 0:
            s += x % 10
            x //= 10
        if s == i:
            return i
    return -1

if __name__ == "__main__":
    nums = [1, 3, 2]
    result = smallest_index(nums)
    print(result)

我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分步骤描述过程
  • 复杂度分析
  • Go完整代码如下:
  • Python完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档