这是一个我想移植到Go 结构中的C 结构:
struct InputBuffer_t {
char* buffer;
size_t buffer_length;
ssize_t input_length;
};
Run Code Online (Sandbox Code Playgroud)
但是有一种方法可以在Go中声明buffer_length变量,而无需使用C.size_t cgo 指针。
这是对可移植性的担忧。如果我这样写Go 结构体,它会是可移植的吗?
type InputBuffer struct {
Buffer string
BufferLength uint32
InputLength uint32
};
Run Code Online (Sandbox Code Playgroud) 假设我有一组元组,每个元组包含两个整数.
mySet = ((1, 3), (3, 4), (3, 5))
Run Code Online (Sandbox Code Playgroud)
从元组中找到共同元素的最佳方法是什么?
对于这种情况,输出将是:
3
Run Code Online (Sandbox Code Playgroud) 我似乎无法弄清楚如何在 C 程序中运行 cmd 程序。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char educode[100];
printf("Welcome To ACE-IT Edu Software!\n");
printf("\nPlease Type An Educator Code and then press enter.");
printf("\nEducator Code: ");
gets(educode);
if(educode == 5678){
system("mkdir test");
} else {
printf("\nSorry, thats not a valid Educator Code. To buy an Educator Code, go to https://www.ace-it.edu");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我最近在一次采访中被要求编写代码以确定整数数组是否包含重复项,因为我自信地告诉他我将迭代元素并将每个元素添加到新数组中(如果数组不包含元素)已经如果它我返回true其他返回虚假的复杂性
代码就是这样的
//complexity is N*N
public static boolean findIfArrayHasDuplicates(int[] array){
int[] newArr = new int[array.length];
List<Integer> intList = new ArrayList<Integer>();
for (int var: array){
if(intList.contains(var)){
return true;
}else{
intList.add(var);
}
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
他让我计算我写的代码的时间复杂度
我回答了
N用于迭代循环N(N + 1)/ 2,用于查找元素是否存在于新列表N中以添加列表中的元素
O()表示法中的总N + N + N*N/2 + N/2乘以2并简化为N趋于无穷大,这可以简化为O(N ^ 2)
他继续问我是否有更好的方法我回答将元素添加到集合中并比较大小如果集合的大小小于它包含重复的数组,请问它的复杂程度是什么仍然是O(N ^ 2),因为添加元素的代码必须首先看看它是否已经在集合中.如何使用所需的内存减少O(N ^ 2)的复杂性.有什么想法可以做到这一点?