问题标签 [in-place]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
224 浏览

grid - 在 Common Lisp 中,我可以在子网格上进行就地算术运算吗?

我正在使用AntikandGsll进行矩阵计算。

有时我想对子网格进行算术运算(例如,将矩阵的一列乘以 2.0)。现在我必须编写这些代码:

根据这些代码,Antik必须先创建一个临时网格用于存储中间结果,然后将其设置为原始mat. 当矩阵很大时,临时网格的创建可能会很慢。所以我希望我可以直接在原版上做到这一点mat

PS:gsll:elt*整个矩阵进行就地修改,例如(gsll:elt* mat 2.0),即使 很大,这也非常有效mat

更新:

我在这里展示我的实验结果:

代码:

结果:

请注意,前一种计算是在整个 100x100 矩阵上进行的,这甚至比后者更快(仅在 1x100 子矩阵上进行)。由于临时存储的分配,后者占用了更多的字节。

0 投票
2 回答
567 浏览

algorithm - Separate the alphabet and digit such that their relative order remains the same in O(n) time and O(1) space

Given an array [a1b7c3d2] convert to [abcd1732] with O(1) space and O(n) time i.e. put the letters on the left and digits on the right such that their relative order is the same. I can think of an O(nlogn) algorithm, but not better. Can somebody please help?

0 投票
0 回答
239 浏览

c - Quicksort C 就地分区不起作用(修订版)

我遇到堆栈溢出错误,如果有人能指出我在哪里做错了,我将不胜感激。C 语言,使用 Visual Studio 编译器。请注意,这只是我的讲师给我的修订。我认为我的其余代码,例如。排序很好。

0 投票
1 回答
165 浏览

naming-conventions - 用于区分就地突变/创建功能的命名约定

当我编写一些通用的编程实用程序代码时,我发现为一个功能同时拥有就地 mutator 和新的对象创建者成员函数是件好事。

例如,某些表示文件系统中路径的类可能具有“规范化”功能。路径对象可能会将自己变异为规范化的对象,或者返回新的规范化路径对象。

我已经为此尝试了一些约定,但其中大多数都不能令人满意。

  1. “正常化!” 对于像 ruby​​ 这样的就地函数 - 很好,但大多数其他语言不支持将特殊字符包含在标识符中。

  2. 'normalize_ip' 用于就地函数 - 因为我的大多数函数用法都是就地的,我认为它太丑陋了。

  3. 'get_normalized' 用于非就地函数 - 可接受,但可能与成员的其他简单 getter 函数混淆。

  4. 非就地功能的“标准化” - 有时不统一,并且很容易与其就地对应部分混淆。

  5. 将非就地函数编写为自由函数 - 缺乏 IDE 的智能感知帮助,有时会出现可见性问题。

我想找到一些好的/实用的约定来区分两个功能。

0 投票
2 回答
88 浏览

r - 就地删除列表元素

通过常规方式(例如ll["name"] <- NULL)从列表中删除元素会导致整个列表被复制。通常,这并不明显,直到数据集变得很大。

我有一个包含十几个元素的列表,每个元素的大小在 0.25 ~ 2 GB 之间。从这个列表中删除三个元素大约需要十分钟才能执行(在相对较快的机器上)。

有没有办法就地从列表中删除元素?


我尝试了以下方法:

输出内存信息:

0 投票
2 回答
753 浏览

algorithm - “就地”MSD 基数排序、堆栈空间和堆栈溢出

我真的很困惑“就地”MSD基数排序算法:

然后使用下一个数字递归处理每个 bin,直到所有数字都用于排序。

我很困惑,因为在我看来递归意味着 O(n) 堆栈空间,其中n是最长字符串的长度(以位数为单位),对吧?

在我看来,避免堆栈溢出的唯一方法是使用堆空间——但是根据任何定义,该算法不再是“就地”的。

那么,如何就地进行 MSD 基数排序呢?

0 投票
1 回答
458 浏览

algorithm - Strassen算法的就地实现?

我设法通过索引操作实现了一个就地解决方案,用于矩阵乘法的天真的分治算法,每次重复需要 8 次递归调用。但是,在尝试实现 Strassen 算法时,我找不到就地执行它的方法。相反,我必须在使用 C 编程时为 7 个递归调用分配 19 个子矩阵。

如何就地实现 Strassen 算法?或者有可能吗?

0 投票
1 回答
201 浏览

string - 什么是就地算法?

假设我想从字符串中删除重复项。我决定使用一个长度为 256 的布尔数组来存储特定字符是否已经出现。我可以遍历字符串,并可以在这个辅助布尔数组的帮助下删除所有重复项。

我的问题是“这个算法是就地的吗?”

我认为它正在使用恒定数量的空间,它不会随着输入的大小而改变,它应该就地。如果我错了,请纠正。

0 投票
1 回答
649 浏览

python - 我将如何在 Python 中计算总面积表?

我在 Python 中计算总面积表( https://en.wikipedia.org/wiki/Summed_area_table )时遇到问题。最明显的算法涉及在引用已经编写的元素的同时更新列表元素......但是关于就地更新的某些内容似乎让 Python 感到困惑。

这是一些示例代码:

根据我自己的手动计算(可能会出现错误),此测试代码应给出如下内容: [[1, 3, 6, 10, 15], [7, 16, 27, 40, 55], [18, 39, 63, 90, 120], [34, 72, 114, 160, 210], [55, 115, 180, 250, 325]]

相反,它给出: [[55, 61, 68, 76, 85], [55, 61, 68, 76, 85], [55, 61, 68, 76, 85], [55, 61, 68, 76 , 85], [55, 61, 68, 76, 85]]

它显然在每次行迭代期间更新每一行,但我不确定为什么或如何。有谁确切地知道出了什么问题?还有其他方法可以进行就地更新吗?如果没有,您将如何处理?

0 投票
3 回答
173 浏览

python - 使用就地 OR 简化空检查

我正在以下形式简化python中的一些空/假检查:

这个:

可以简化为:

而且,看上面是自然地尝试进一步简化,如下所示:

但是,python的就地or实际上是就地按位或:

所以,问题是:Python 是否有一个 inplace 或?此外,您是否看到像这样进行简化的 null/false 检查时遇到问题?

免责声明

我知道这a is not Nonenot a. 前者评估 a 是否确实不是一个None值,而后者评估 a 是否不是评估为False(如False, None, 0, ''(空字符串),[], {}(空集合)等)