当我们讨论分布式系统的性能时,我们使用术语tp50,tp90,tp99.99 TPS.有人可以解释一下我们的意思吗?
给定一个输入数组,我们可以找到一个单个子阵列,它通过跟踪到目前为止找到的总和和起始位置,在线性时间内总和为K(给定).如果当前总和变得大于K,我们继续从起始位置移除元素,直到我们得到当前总和<= K.
我从geeksforgeeks找到了示例代码并更新了它以返回所有这些可能的集合.但假设输入数组仅由+ ve数组成.
bool subArraySum(int arr[], int n, int sum)
{
int curr_sum = 0, start = 0, i;
bool found = false;
for (i = 0; i <= n; i++)
{
while (curr_sum > sum && start < i)
{
curr_sum = curr_sum - arr[start];
start++;
}
if (curr_sum == sum)
{
cout<<"Sum found in b/w indices: "<<start<<" & "<<(i-1)<<"\n";
curr_sum -= arr[start];
start++;
found = true;
}
// Add this element to curr_sum
if (i < n) …
Run Code Online (Sandbox Code Playgroud) 给定一个整数数组和一个范围(低,高),找到数组中所有连续的子序列,它们在该范围内具有和.
有没有比O(n ^ 2)好的解决方案?
我尝试了很多,但找不到比O(n ^ 2)更好的解决方案.请帮我找到更好的解决方案或确认这是我们能做的最好的.
这就是我现在所拥有的,我假设范围被定义为[lo, hi]
.
public static int numOfCombinations(final int[] data, final int lo, final int hi, int beg, int end) {
int count = 0, sum = data[beg];
while (beg < data.length && end < data.length) {
if (sum > hi) {
break;
} else {
if (lo <= sum && sum <= hi) {
System.out.println("Range found: [" + beg + ", " + end + "]");
++count;
}
++end;
if (end < …
Run Code Online (Sandbox Code Playgroud) 我在服务器上运行了30个进程实例,并希望为每个进程记录打开的文件以进行分析.
我运行了以下命令:
* ps auwwx | grep PROG_NAME | awk '{print $2}' | xargs lsof -p | less
Run Code Online (Sandbox Code Playgroud)
它抱怨说,"lsof:状态错误:没有这样的文件或目录"
但是,如果我运行lsof -p < pid >
它,则为我提供该进程的打开文件列表.如何在FreeBSD计算机上获取该进程的所有30个实例的所有打开文件的列表.
此外,我不希望列出共享库.如果我这样做-d "^txt"
不显示我想要显示的其他数据库文件.有没有其他方法可以查出.so文件?
我被问到这个问题:谷歌的类似问题.在Facebook采访中被问到类似的问题.
确定2/9数字游戏的赢家
两名玩家玩下面的游戏:他们选择一个随机数N(小于20亿),然后从1开始,轮流将前一轮的数字乘以2或9(他们的选择).到达N的人首先获胜.
候选人应该编写一个函数给出N判定谁获胜(第一或第二个玩家?)
2/9的基本随机选择是否可用于乘法工作,或者他们希望我们在移动中添加智能.例如:从乘以2开始,只有当你看到另一个人无法比你更快达到N时才乘以9?
处理这类问题的最佳方法是什么?
我在生成不遵循离散均匀分布的随机数时遇到了麻烦.
例如,假设我有5个数字(为了保持简单),生成数字k的概率为k/15.(k = 1到5)
我的想法是使用rand()生成一个随机数j,如果这个数字j是:
1 =>然后生成数字1
2或3 => num 2
4或5或6 => num 3
7或8或9或10 => num 4
11或12或13或14或15 =>数字5
现在将其缩放为生成1-10,1-100,1-1000.这是否按照我打算的方式工作?我已经构建了一个循环,每次需要生成一个数字时都会这样做,我认为它可能是低效的,因为它一直上升,直到找到在其中一个范围内生成的j数...有什么可能是更好的方法去做这个?
编辑:或者可能使用正确的数字创建一个数组,然后使用rand()更好的解决方案?
这是片段:
String myTime = someTime / 1e9d + ",";
Run Code Online (Sandbox Code Playgroud)
someTime
是通过使用派生的System.nanoTime()
.是什么1e9d
在这里做?
给定大小为N的N个数组,并且它们都被排序,如果它不允许你使用额外的空间,那么如何有效地找到它们的公共数据或者用更少的时间复杂度?
例如:
1. 10 160 200 500 500
2. 4 150 160 170 500
3. 2 160 200 202 203
4. 3 150 155 160 300
5. 3 150 155 160 301
Run Code Online (Sandbox Code Playgroud)
这是一个面试问题,我发现了一些类似的问题,但它们没有包括输入的额外条件,或者不能使用额外的内存.
我想不出任何低于O(n ^ 2 lg n)复杂度的解决方案.在这种情况下,我更愿意采用最简单的解决方案,这给了我这种复杂性,即:
not_found_flag = false
for each element 'v' in row-1
for each row 'i' in the remaining set
perform binary search for 'v' in 'i'
if 'v' not found in row 'i'
not_found_flag = true
break
if not not_found_flag
print element 'v' as …
Run Code Online (Sandbox Code Playgroud) 我在以下代码的代码上运行checkstyle时遇到此错误:
@Override
public String[] getDescriptions() {
return DESCRIPTIONS;
}
Run Code Online (Sandbox Code Playgroud)
但是DESCRIPTIONS IS NOT
可变.它被定义为:
private static final String[] DESCRIPTIONS = new String[NUM_COLUMNS];
static {
// In a loop assign values to the array.
for (int i = 0; i < NUM_COLUMNS; ++i) {
DESCRIPTIONS[i] = "Some value";
}
}
Run Code Online (Sandbox Code Playgroud)
这是完整的错误消息:
"Returning a reference to a mutable object value stored in one
of the object's fields exposes the internal representation of
the object. If instances are accessed by untrusted code, and
unchecked …
Run Code Online (Sandbox Code Playgroud) 这是我的想法,但它是 O(n^2):
例如:输入是“Thisisawesome”,我们需要检查添加当前字符是否会使旧的搜索结果变得更长且有意义。但是为了看到我们需要备份的地方,我们必须一直遍历到开始。例如:“awe”和“some”是合适的词,但“awesome”是更大的词。请建议我们如何提高复杂性。这是代码:
void update(string in)
{
int len= in.length();
int DS[len];
string word;
for(int i=0; i<len; i++) DS[i]=0;
for(int i=0; i<len; i++)
for(int j=i+1; j<=len; j++)
{
word = in.substr(i,j-i);
if(dict.find(word)!=dict.end())
DS[j-1] = (DS[j-1] > word.length()) ? DS[j-1] : word.length();
}
}
Run Code Online (Sandbox Code Playgroud)