问题标签 [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.
grid - 在 Common Lisp 中,我可以在子网格上进行就地算术运算吗?
我正在使用Antik
andGsll
进行矩阵计算。
有时我想对子网格进行算术运算(例如,将矩阵的一列乘以 2.0)。现在我必须编写这些代码:
根据这些代码,Antik
必须先创建一个临时网格用于存储中间结果,然后将其设置为原始mat
. 当矩阵很大时,临时网格的创建可能会很慢。所以我希望我可以直接在原版上做到这一点mat
。
PS:对gsll:elt*
整个矩阵进行就地修改,例如(gsll:elt* mat 2.0)
,即使 很大,这也非常有效mat
。
更新:
我在这里展示我的实验结果:
代码:
结果:
请注意,前一种计算是在整个 100x100 矩阵上进行的,这甚至比后者更快(仅在 1x100 子矩阵上进行)。由于临时存储的分配,后者占用了更多的字节。
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?
c - Quicksort C 就地分区不起作用(修订版)
我遇到堆栈溢出错误,如果有人能指出我在哪里做错了,我将不胜感激。C 语言,使用 Visual Studio 编译器。请注意,这只是我的讲师给我的修订。我认为我的其余代码,例如。排序很好。
naming-conventions - 用于区分就地突变/创建功能的命名约定
当我编写一些通用的编程实用程序代码时,我发现为一个功能同时拥有就地 mutator 和新的对象创建者成员函数是件好事。
例如,某些表示文件系统中路径的类可能具有“规范化”功能。路径对象可能会将自己变异为规范化的对象,或者返回新的规范化路径对象。
我已经为此尝试了一些约定,但其中大多数都不能令人满意。
“正常化!” 对于像 ruby 这样的就地函数 - 很好,但大多数其他语言不支持将特殊字符包含在标识符中。
'normalize_ip' 用于就地函数 - 因为我的大多数函数用法都是就地的,我认为它太丑陋了。
'get_normalized' 用于非就地函数 - 可接受,但可能与成员的其他简单 getter 函数混淆。
非就地功能的“标准化” - 有时不统一,并且很容易与其就地对应部分混淆。
将非就地函数编写为自由函数 - 缺乏 IDE 的智能感知帮助,有时会出现可见性问题。
我想找到一些好的/实用的约定来区分两个功能。
r - 就地删除列表元素
通过常规方式(例如ll["name"] <- NULL
)从列表中删除元素会导致整个列表被复制。通常,这并不明显,直到数据集变得很大。
我有一个包含十几个元素的列表,每个元素的大小在 0.25 ~ 2 GB 之间。从这个列表中删除三个元素大约需要十分钟才能执行(在相对较快的机器上)。
有没有办法就地从列表中删除元素?
我尝试了以下方法:
输出内存信息:
algorithm - “就地”MSD 基数排序、堆栈空间和堆栈溢出
我真的很困惑“就地”MSD基数排序算法:
然后使用下一个数字递归处理每个 bin,直到所有数字都用于排序。
我很困惑,因为在我看来递归意味着 O(n) 堆栈空间,其中n是最长字符串的长度(以位数为单位),对吧?
在我看来,避免堆栈溢出的唯一方法是使用堆空间——但是根据任何定义,该算法不再是“就地”的。
那么,如何就地进行 MSD 基数排序呢?
algorithm - Strassen算法的就地实现?
我设法通过索引操作实现了一个就地解决方案,用于矩阵乘法的天真的分治算法,每次重复需要 8 次递归调用。但是,在尝试实现 Strassen 算法时,我找不到就地执行它的方法。相反,我必须在使用 C 编程时为 7 个递归调用分配 19 个子矩阵。
如何就地实现 Strassen 算法?或者有可能吗?
string - 什么是就地算法?
假设我想从字符串中删除重复项。我决定使用一个长度为 256 的布尔数组来存储特定字符是否已经出现。我可以遍历字符串,并可以在这个辅助布尔数组的帮助下删除所有重复项。
我的问题是“这个算法是就地的吗?”
我认为它正在使用恒定数量的空间,它不会随着输入的大小而改变,它应该就地。如果我错了,请纠正。
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]]
它显然在每次行迭代期间更新每一行,但我不确定为什么或如何。有谁确切地知道出了什么问题?还有其他方法可以进行就地更新吗?如果没有,您将如何处理?
python - 使用就地 OR 简化空检查
我正在以下形式简化python中的一些空/假检查:
这个:
可以简化为:
而且,看上面是自然地尝试进一步简化,如下所示:
但是,python的就地or
实际上是就地按位或:
所以,问题是:Python 是否有一个 inplace 或?此外,您是否看到像这样进行简化的 null/false 检查时遇到问题?
免责声明
我知道这a is not None
与not a
. 前者评估 a 是否确实不是一个None
值,而后者评估 a 是否不是评估为False
(如False
, None
, 0
, ''
(空字符串),[]
, {}
(空集合)等)