Infosys在线笔试(上午场)数组链问题(基于数位和Reach计算)求解疑惑
Infosys在线笔试(上午场)数组链问题(基于数位和Reach计算)求解疑惑
各位好!刚考完Infosys上午场的在线笔试,遇到一道数组题现在卡得慌,想请各位大佬帮忙梳理下正确的解题逻辑,或者有没有人刚好见过这道原题的?
先说说我能回忆起来的题目细节(因为考试环境没法复制原题,全凭脑子记,可能有偏差):
- 给定一个整数数组,第一个元素是起点,先计算一个叫
reach的值:reach = arr[0] + sumOfDigits(arr[0]),数位和就是把数字的每一位加起来,比如例子里的[38, 2, 10, 2, 14],38的数位和是3+8=11,所以reach=38+11=49。 - 接下来要统计有效链中的元素个数,我一开始理解的是“所有值小于reach的元素都算”,但测试用例的输出是3——可明明后面的2、14也都小于49啊,为啥不算进去?
- 而且题目应该不是要更新reach(我试过如果用后面元素更新reach的思路,也凑不出3这个结果),动态规划看起来也不沾边,因为没有状态转移的感觉。
我当时的核心疑惑点:
- 测试用例输出是3,对应数组里的38、2、10这三个元素?那是不是链的停止规则是按顺序遍历,直到遇到某个触发停止的条件就终止统计?不对啊,第四个元素是2也小于49,为啥到3就停了?
- 会不会是统计连续的前缀元素中满足条件的,但有隐藏的“累计触发”规则?比如是不是需要元素的位置索引和值的某种组合满足条件?
- 有没有可能我完全理解错了reach的作用?比如reach不是和元素值直接比较,而是和元素的索引+值?或者是其他的比较逻辑?
有没有大佬刚好做过这道Infosys的笔试题,记得完整的题目描述?或者能从我的记忆里找出理解偏差的地方?真的很想搞懂这道题的正确逻辑,不然心里一直硌得慌😂




