我在测试代码时遇到了一个问题.我定义了一个宏来获取数组元素的数量,如下所示:
#define ARRAY_SIZE(arr) sizeof(arr) / sizeof(arr[0])
此宏可用于计算初始化程序与存储容量匹配的数组的元素数(例如int buf[] = {1,2,3};),但对于声明为:的数组不是很有效:int buf[20] = {1,2,3};
现在我知道像这样计算数组元素非常简单,但是大量的元素呢?你怎么算他们?你知道,计数可能是一个杀手!
请考虑以下代码:
#include <stdio.h>
#include <string.h>
#define ARRAY_SIZE(arr) sizeof(arr) / sizeof(arr[0])
void g_strcat(void *_Dst, size_t dstSize, size_t bytes, const void *_Src, size_t srcSize);
int main(void)
{
int dst[20] = { 1,2,3 };
int src[] = { 4,5,6 };
size_t dstSize = 3; // dstSize = ARRAY_SIZE(dst) doesn't work
size_t srcSize = ARRAY_SIZE(src);
g_strcat(dst, dstSize, sizeof(int), src, srcSize);
size_t n, newSize = dstSize + srcSize; …Run Code Online (Sandbox Code Playgroud) 我正在尝试检索列表中最频繁和不太频繁的元素。
frequency([13,12,11,13,14,13,7,11,13,14,12,14,14])
Run Code Online (Sandbox Code Playgroud)
我的输出是:
([7], [13, 14])
Run Code Online (Sandbox Code Playgroud)
我尝试过:
import collections
s = [13,12,11,13,14,13,7,11,13,14,12,14,14]
count = collections.Counter(s)
mins = [a for a, b in count.items() if b == min(count.values())]
maxes = [a for a, b in count.items() if b == max(count.values())]
final_vals = [mins, maxes]
Run Code Online (Sandbox Code Playgroud)
但我不想使用该collections模块并尝试更面向逻辑的解决方案。
你能帮我在没有集合的情况下做到这一点吗?
向量中有多少个整数20.88 10 ¯2.3 0 .555 222 ¯0 2 3.3 9?
我需要使用 APL 来完成。
还请推荐任何学习 APL 语言的链接。
我读到可以从给定字符串形成的子串的总数是n ^ 2,但我不明白如何计算它.
通过子串,我的意思是,给定一个字符串CAT,子串将是:
C
CA
CAT
A
AT
T
Run Code Online (Sandbox Code Playgroud) 例如,对于N = 3. 排列是:
[1,3,2]
[2,3,1]
Run Code Online (Sandbox Code Playgroud)
注意:[1,2,3]并且[3,2,1]在此处无效,因为[1,2,3]增加但不减少,反之亦然[3,2,1].
我在TCS CodeVita 2017中遇到了这个问题,他们甚至没有为此提供社论.
我只想计算字符串数组中的字母数字 - 没有空格、标点符号等。
我有这个笨重的代码:
private int GetCountOfCharsInDoc(string[] _lines)
{
int iCountOfChars = 0;
string sLine;
foreach (string line in _lines)
{
sLine = line.Replace(" ", string.Empty);
sLine = line.Replace(".", string.Empty);
sLine = line.Replace("?", string.Empty);
sLine = line.Replace(",", string.Empty);
sLine = line.Replace(";", string.Empty);
sLine = line.Replace(":", string.Empty);
sLine = line.Replace("(", string.Empty);
sLine = line.Replace(")", string.Empty);
sLine = line.Replace("'", string.Empty);
sLine = line.Replace("\"", string.Empty);
iCountOfChars = iCountOfChars + sLine.Count();
}
return iCountOfChars;
}
Run Code Online (Sandbox Code Playgroud)
什么是仅计算字母数字的更好/更有效的方法?
我想知道计算三元组i、j、 等k计数的有效方法i < j < k。
我尝试使用以下代码:
for i in range(n):
for j in range(i + 1, n):
for k in range(j + 1, n):
ans += 1
Run Code Online (Sandbox Code Playgroud)
但这会导致 O(N 3 ) 时间复杂度,而且效率不高。O(N log N) 时间复杂度(或更快)将是最佳的。
我只需要计算字符串中的句点 (.)。为此,我使用库ispunct中的函数ctype.h。我不想计算逗号 (,),也不想计算感叹号 (!)。
我怎样才能只计算一个周期?
当我使用ispunctctype 库中的函数时,我的程序会计算句点 (.)、逗号 (,) 和感叹号。
我正在练习我的 R 技能,我想知道是否有人擅长用于计数的函数或循环。我的想法很模糊,但我可以举个例子。
举个例子:
我有 4 个书架,一个叠一个。第一个(底部)架子可以放6本书,第二个架子可以放4本书,第三个架子可以放6本书,第四个架子可以放4本书。
我如何制作一个函数/循环,其中我的输入是我购买的书籍数量,输出是有多少书架已满。我希望系统从底部开始并向上运行。
我曾想过找出书架上可以容纳的平均书籍数量,但如果输入是 5,程序会认为第一个书架已满,但事实并非如此。
我有两个布尔数组:
arr1 = [true, false, false, true]
arr2 = [false, false, false ,true]
Run Code Online (Sandbox Code Playgroud)
我想创建一个只有当arr1和arr2包含true但每个数组只有一个true时才返回true的函数.例如,对于上面的数组,函数必须返回false.如果数组是这样的:
arr1 = [true, false, false, false]
arr2 = [false, false, false ,true]
Run Code Online (Sandbox Code Playgroud)
该函数将返回true.您是否知道快速实现这一目标的方法而无需计算元素?