我正在寻找一种更有效的替代蛮力来寻找具有非负和的阵列的最长子阵列.该数组中的数字范围为-5到5.
例如,如果您有一个数组A:
4 2 -5 3 0 -2 -2 -3 4 -4 -3 -2 1
那么最长的非负子阵列是
4 2 -5 3 0 -2 -2 -3 4,长度为9
我正在考虑的解决方案是保持最佳解决方案和最佳后缀,其中最佳后缀始终以最后检查点结束A[i].如果最佳后缀比最佳解决方案更长,我们会将最佳解决方案更新为最佳后缀.
后缀将由夹在两个正子阵列之间的负子阵列构成.所以,在这种情况下从左到右:
4 2是第一正子阵列-5是负子阵列3 0 -2是第二正子阵列
然后程序检查两个正子阵列的总和是否大于负子阵列.如果是这样,整个最佳后缀成为新的第一个正子数组.如果不是,则转储第一个正和负子阵列,并且第二个正子阵列成为第一个子阵列,依此类推.
理论上,程序应该能够逐步检查线性时间内的最佳解决方案.
但这个答案似乎是不正确的.
所以我正在寻找一个更好的解决方案,或者至少提示一个更好的方向
任何帮助,将不胜感激!
之前已经在这里和其他一些地方问过这个问题,但似乎建议的答案不适用于 postgres 或者在这种情况下不起作用。
我正在寻找不同的列名称,例如:
SELECT DISTINCT column_name FROM table_name WHERE ... ORDER BY column_name但是我希望消除区分大小写的重复项(例如A和a应该被视为同一件事)
我尝试过COLLATE,但所有可用的格式都区分大小写。LOWER()通过OR更改案例UPPER()将不起作用,因为在这种情况下我需要案例信息。
我想过这样的事情来获取独特的价值,但仍然保持这种情况:
SELECT DISTINCT upper(my_column) as upper_case, my_column
FROM my_table
ORDER BY upper(my_column)
Run Code Online (Sandbox Code Playgroud)
但是在不同的查询中引入 my_column 就否定了整个事情。
如何在不修改结果本身大小写的情况下获得唯一值(不区分大小写)?
我相信这是C++,但它可能是C?我看了C++已经有一段时间了,所以我最终找不到这个bug.我在接受采访时被问到这个问题并且没有答案.我显然没有得到这份工作,但现在我很想找到答案.
#include<iostream>
class Base {
public:
Base() {
std::cerr<<"constructing Base " << this << std::endl;
i = new int;
}
~Base() {
std::cerr<<"destroying Base " << this << std::endl;
delete i;
}
private
int* i;
};
class Derived : public Base {
public:
Derived() {
std::cerr<<"constructing Dervied " << this << std::endl;
d = new double;
}
~Derived() {
std::cerr<<"destroying Derived " << this << std::endl;
delete d;
}
private
double* d;
};
int main(int argc, char** argv) {
using …Run Code Online (Sandbox Code Playgroud)