【问题标题】:Changing the values of array by the distance of the indexes (c)通过索引的距离更改数组的值 (c)
【发布时间】:2018-07-27 10:18:28
【问题描述】:

我很难处理这个: 我需要在 C 中编写一个接收二进制数组及其大小的函数,该函数应该计算并用每个 1 到最接近的 0 的距离(按索引)替换当前值。 例如:如果函数接收到该数组{1,1,0,1,1,1,0,1},那么该数组的新值应该是{2,1,0,1,2,1,0,1}。已知输入至少有 1 个零。

所以我首先要找到一对零(如果只有 1,则只有 1)并将它们设置为 2 个索引(z1z2)。然后我设置另一个索引i 每次检查哪个零最接近他(绝对值),然后iz1z2 之间的差异将是新值。

我有计划,但事情并没有完全按照我的计划进行。基本上我删除了代码(无论如何都不好),所以我将不胜感激。谢谢!

【问题讨论】:

    标签: c arrays binary


    【解决方案1】:

    这个问题基于两件事

    • 保留一个数组left[i],它从左到右距离索引i最近的0

    • 保留一个数组right[i],它从右到左距离索引i最近的0

    两者都可以在单循环迭代中计算。 O(n).

    • 然后为每个位置获取left[i]right[i] 的最小值。这将是1 留在i 位置的答案。

    总体时间复杂度为O(n)

    【讨论】:

    • “保留一个数组..”是指创建另一个数组吗?听起来很有趣。
    • @OfekPintok.: 保留 2 个数组...是的。但也可以根据精确的约束对其进行修改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    • 2018-06-25
    • 2021-07-12
    • 2015-02-11
    • 2017-06-25
    • 2021-06-28
    相关资源
    最近更新 更多