手撕代码
1、括号字符串的有效性
限定语言:C、Python、C++、Javascript、Python 3、Java、Go
给定一个字符串str,判断是不是整体有效的括号字符串(整体有效:即存在一种括号匹配方案,使每个括号字符均能找到对应的反向括号,且字符串中不包含非括号字符)。
示例1
输入
“(())”
输出
true
示例2
输入
“()a()”
输出
false
说明
()a()中包含了 ‘a’,a不是括号字符
2、能否完美地拼成矩形
能否完美地拼成矩形
限定语言:C、Python、C++、Javascript、Python 3、Java、Go
每条边不是平行于X轴就是平行于Y轴的矩形,可以用左下角和右上角的点来表示。比如{1, 2, 3, 4},表示的图形如下
给定一个N行4列的二维数组matrix,表示N个每条边不是平行于X轴就是平行于Y轴的矩形。想知道所有的矩形能否组成一个大的完美矩形。完美矩形是指拼出的整体图案是矩形,既不缺任何块儿,也没有重合部分
[要求]
时间复杂度为O(n)O(n),额外空间复杂度为O(n)O(n)
示例1
输入
[[1,1,3,3],[3,1,4,2],[1,3,2,4],[3,2,4,4]]
输出
false
说明
缺少{2, 3, 3, 4}这一块儿
示例2
输入
[[1,1,3,3],[3,2,4,3],[3,2,4,4],[1,3,2,4],[2,3,3,4]]
输出
false
说明
拼出的图案缺少{3, 1, 4, 2},并且{3, 2, 4, 2}是重合区域
示例3
输入
[[1,1,3,3],[3,1,4,2],[3,2,4,4],[1,3,2,4],[2,3,3,4]]
输出
true