You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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这个结果),动态规划看起来也不沾边,因为没有状态转移的感觉。

我当时的核心疑惑点:

  1. 测试用例输出是3,对应数组里的38、2、10这三个元素?那是不是链的停止规则是按顺序遍历,直到遇到某个触发停止的条件就终止统计?不对啊,第四个元素是2也小于49,为啥到3就停了?
  2. 会不会是统计连续的前缀元素中满足条件的,但有隐藏的“累计触发”规则?比如是不是需要元素的位置索引和值的某种组合满足条件?
  3. 有没有可能我完全理解错了reach的作用?比如reach不是和元素值直接比较,而是和元素的索引+值?或者是其他的比较逻辑?

有没有大佬刚好做过这道Infosys的笔试题,记得完整的题目描述?或者能从我的记忆里找出理解偏差的地方?真的很想搞懂这道题的正确逻辑,不然心里一直硌得慌😂

火山引擎 最新活动