给定NxN二进制矩阵(仅包含0或1),我们如何才能找到包含全0的最大矩形?
例:
I
0 0 0 0 1 0
0 0 1 0 0 1
II->0 0 0 0 0 0
1 0 0 0 0 0
0 0 0 0 0 1 <--IV
0 0 1 0 0 0
IV
Run Code Online (Sandbox Code Playgroud)
对于上面的例子,它是一个6×6的二进制矩阵.在这种情况下,返回值将是单元格1:(2,1)和单元格2:(4,4).得到的子矩阵可以是正方形或矩形.返回值也可以是所有0的最大子矩阵的大小,在该示例中为3×4.
我最近接触到了这个有趣的问题.您将获得只包含字符的字符串'(',')','{','}','['和']',例如"[{()}]",你需要写这将检查这些输入字符串的有效性的函数,函数可能是这样的:
bool isValid(char* s);
这些支架必须关闭以正确的顺序,例如"()"和"()[]{}"都是有效的,但是"(]","([)]"并且"{{{{"都没有!
我推出了以下O(n)时间和O(n)空间复杂度解决方案,它工作正常:
'(','{'或'['将其推到堆叠上.')','}'OR ']',检查堆栈顶部是否是相应的开括号,如果是,则弹出堆栈,否则打破循环并返回false.这是有效的,但我们可以优化空间,可以是恒定的额外空间,我知道时间复杂度不能小于O(n),因为我们必须看每个角色.
所以我的问题是我们可以在O(1)空间中解决这个问题吗?
我接受了以下面试问题:
class A
{
public:
void fun()
{
std::cout << "fun" << std::endl;
}
};
A* a = NULL;
a->fun();
Run Code Online (Sandbox Code Playgroud)
执行此代码时会发生什么,为什么?
我最近遇到了一个关于字符串的有趣问题.假设您有以下内容:
Input string1: "this is a test string"
Input string2: "tist"
Output string: "t stri"
Run Code Online (Sandbox Code Playgroud)
因此,如上所述,我如何找到包含字符串2中所有字符的string1的最小子字符串?
给定string S的length N找到最长子不重复的字符.
例:
输入: "stackoverflow"
输出: "stackoverfl"
如果有两个这样的候选人,请先从左边返回.我需要线性时间和恒定空间算法.
根据ISO C++,取消引用空指针是未定义的行为.我的好奇心是,为什么?为什么标准决定声明它未定义的行为?这个决定背后的理由是什么?编译器依赖?似乎没有,因为根据C99标准,据我所知,它是明确定义的.机器依赖?有任何想法吗?
文件1.c.
int a[10];
Run Code Online (Sandbox Code Playgroud)
文件main.c:
extern int *a;
int main()
{
printf("%d\n", a[0]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
给我一个段错误!出了什么问题?
在C++ 0x(哦!读取C++ 11)中,我们有自动类型推断.令我好奇的一件事是我无法创建一系列自动变量.例如:
auto A[] = {1, 2, 3, 4}; // Error!
Run Code Online (Sandbox Code Playgroud)
有什么想法可能被禁止了吗?