由买买提看人间百态

topics

全部话题 - 话题: parenthese
首页 上页 1 2 3 4 5 6 7 下页 末页 (共7页)
s******e
发帖数: 146
1
来自主题: JobHunting版 - longest valid Parentheses有O(n)算法么
我今天也正好做到这个。
想法是存上每个‘(’之前已经匹配的括号数量。
比如
()(()()(()
第1次遇到前括号,入栈数字是0,然后遇到后括号,现在的长度是2+0
第2次遇到前括号,入栈数字是2,当前长度重设为0
第3次遇到前括号,入栈数字是当前长度0.然后后括号,出栈,长度是2+0,
第4次遇到前括号,入栈数字是当前长度2.然后后括号,出栈,长度是2+2,
第5次遇到前括号,入栈数字是当前长度4,当前长度重设为0
第6次遇到前括号,入栈数字是当前长度0,遇到后括号,出栈,长度是2.
如果栈内仍有数字,目前是2,4,则全部出栈,和当前长度2比。取最长为4.
public class Solution {
public int longestValidParentheses(String s) {
// Start typing your Java solution below
// DO NOT write main() function
Stack stack = new Stack();
... 阅读全帖
w***o
发帖数: 109
2
来自主题: JobHunting版 - longest valid Parentheses有O(n)算法么
拿这个练练DP:
public int longestValidParentheses(String s) {
int n = s.length();
int[] dp = new int[n+1];
int max = 0;
for(int i = n-2; i >= 0; i--) {
if(s.charAt(i) == '(') {
int j = i+1+dp[i+1];
if(j < n && s.charAt(j) == ')') {
dp[i] = 2+dp[i+1]+dp[j+1];
max = Math.max(max, dp[i]);
}
}
}

return max;
}
j******s
发帖数: 48
3
来自主题: JobHunting版 - longest valid Parentheses有O(n)算法么
扫描两遍的好处是constant space...
w***y
发帖数: 6251
4
来自主题: JobHunting版 - longest valid Parentheses有O(n)算法么
这个做法是不是把不能匹配的‘)’也入栈的?
s**1
发帖数: 71
5
Thank you so much. Would you please walk me through the algorithm a little,
because the hardest part k/2 <= i <= n-k/2 I haven't figured out.
Thanks again.
In addition, if I want to print out all the trees in dotted parenthesized
form, recursion is a good way? Or iterator? I have no clue on that? Can you
please give me some hint?
Thanks again.
l*****a
发帖数: 559
6
来自主题: JobHunting版 - 问个括号问题的迭代解法
You are talking about another question "validate the parentheses".
b*2
发帖数: 94
7
来自主题: JobHunting版 - Amazon都是collabedit上interview?
去年对着电话念代码的飘过……当时跟印度MM在brace, parenthese和 brackets上各种
纠结……
d******e
发帖数: 164
8
来自主题: JobHunting版 - Longest Valid Parentheses
")(()())())(((()))(()()()(()(()(())))(())()((()()(((()())()))(()()())())(())
(()(()()()()))(((()())))(((()))))()()())))(()))))())(((()"
小数据可以过,大数据停在上面这个case。
Run Status: Runtime Error
但是拷出来,自己运行是对的,没有错误。请大家帮忙看看。
class Solution {
public:
int longestValidParentheses(string s) {
int m = 0;
stack stk;
for (int i = 0; i < s.size(); i++) {
if (s[i] == '(' || stk.empty() || s[stk.top()] == ')') {
stk.push(i);
} else {
... 阅读全帖
p*****2
发帖数: 21240
9
来自主题: JobHunting版 - Longest Valid Parentheses
这题你不用纠结。你面试不会碰到的。
l**b
发帖数: 457
10
来自主题: JobHunting版 - Longest Valid Parentheses
为什么?
p*****2
发帖数: 21240
11
来自主题: JobHunting版 - Longest Valid Parentheses

你去考考古。看看这题是怎么来的。拿它当作一个很好的练习题就可以了。
P*******b
发帖数: 1001
12
来自主题: JobHunting版 - Longest Valid Parentheses
你定义的是stack,push进去的是int,肯定是超过ascii范围了

))
b*****n
发帖数: 482
13
来自主题: JobHunting版 - Longest Valid Parentheses
en, 好眼力。
d******e
发帖数: 164
14
来自主题: JobHunting版 - Longest Valid Parentheses
太感谢了!
l*****a
发帖数: 14598
15
来自主题: JobHunting版 - Longest Valid Parentheses
ZKSS吧,大牛
让我们这些新来的知道一下
p*****2
发帖数: 21240
16
来自主题: JobHunting版 - Longest Valid Parentheses

当时你应该在场的。
l*****a
发帖数: 14598
17
来自主题: JobHunting版 - Longest Valid Parentheses
我以前不做难题的。
现在发现不做就没饭吃了 :(
p*****2
发帖数: 21240
18
来自主题: JobHunting版 - Longest Valid Parentheses

感觉你快成独孤不败了。
w****a
发帖数: 710
19
来自主题: JobHunting版 - 10分钟前的G家电面面经
fresh master,刚刚结束的G家电面,问了两题都答上了除了一处笔误没有被指出bug,
希望不要悲剧,求bless。
两题都简单,第一题是大数加法,还不需要考虑负数情况。第二题是leetcode上的
generate parentheses。
上来没有让我介绍project之类的,直接开始答题,大数加法那个稍微多花了点时间,
主要是开始有点紧张我,写的代码用了两个循环(现在想想真2啊,不这么干估计能做3
题),他直接指出来不要写两个循环,我立马就改了。倒是没有被指出bug,但是他跟
着问了很多,比如我有些if判断,while里面的条件判断,他都一一问我是干嘛的,然
后他自己还在想test case跟着我的代码跑。其实时间不是写代码上的,都是他问问题
上的,可以说交互很频繁。
第二题我进入状态了直接写代码,代码大概也就一两分钟就写好了,有一处检查left<
right,笔误写成left>right了,他当时指出我就改过来了。不知道这个算不算bug。。
然后他依然是问了一堆(重点还是判断我if或while里的条件判断是干嘛的,非法情况
会怎样等等),最后又用他的大脑跑了一遍他的测试用... 阅读全帖
i*********7
发帖数: 348
20
=。=
它的意思是说只要这个message has balanced parentheses就算是yes,否则就是no?=
。=
不懂题意啊不懂。。。
w********p
发帖数: 948
21
来自主题: JobHunting版 - 最失败的一次onsite - bloomberg
evaluator (String expression)
1。将expression parse 成三块 expr1 operator expr2
2 。如果expr1, expr2 都是数字,return 计算结果。 比如6*6
3。 不然,如果operator 是乘除的话,parse 来string2里的第一个数字,得到结果
4. 再不然,recursively call for rest expression.
有两个links很好和大家分析。
http://www.strchr.com/expression_evaluator
http://compsci.ca/v3/viewtopic.php?t=21703
把网上的code帖出来,给爱偷懒的同伙。我还没仔细看。
无意中运行了下面的code,并不能handle所有的cases 。个人还是喜欢stack的版本。
不会没关系,学学就会了吗。呵呵, 会了不用还是会忘嘛。
本科compiler课是要用java写一个compiler出来的。还有微积分,还给老师的知识还少
嘛?。。。
/*
* The "ExpressionEv... 阅读全帖
s**x
发帖数: 405
22
std::string needs resize, char* does not
W********e
发帖数: 45
23

resize的意义是什么?
s**x
发帖数: 405
W********e
发帖数: 45
25

哦,我是想不明白,不是resize本身,二是为什么要做这个动作,说白了是不理解这里
的DFS啊!
s**x
发帖数: 405
26
resize cancels the push_back.
You can also use pop_back() instead of resize(size()-1), it is the same.
o****d
发帖数: 2835
27
他的目的是把sample的最后一个entry去掉
其实他想做的就是 sample.pop_back(),把之前sample.push_back('(')的清掉
(说实话,感觉他这么写有点难看)
另外 如果CombinationPar的第二个参数 不是引用(string& sample)的话
就不用额外做这个处理了
sample.push_back('(');
CombinationPar(result, sample, deep+1, n, leftNum+1, rightNum);
sample.resize(sample.size()-1);
s**x
发帖数: 405
28
难看是难看了点,但是避免字符串复制
如果不传引用就可以直接传 sample+"("
W********e
发帖数: 45
29

都是高手!
o****d
发帖数: 2835
30
恩 用引用 避免复制是对的
我想说的意思是 用resize比起pop_back难看懂 理解上不是那么直接
g***j
发帖数: 1275
31
来自主题: JobHunting版 - 两个小时做了6道题
大小集合都过了,大部分一次过,请问这算快还是慢的?才开始做题,不可能每天都2
个小时,如果要做完,这要多久啊!
都是老题
1) 3 sum
2) valid parentheses;
3) merge two sorted lists;
4) implement strstr();
5) pow(x,n);
6) merge intervals;
c**w
发帖数: 1024
32
来自主题: JobHunting版 - Leetcode上Longest Valid Parentheses
请问大家:
()(() 答案是2
(()() 答案是4
为什么呢?不应该都是4么?
)()())()()( 这个答案应该是几?
谢谢
c**y
发帖数: 172
33
来自主题: JobHunting版 - Leetcode上Longest Valid Parentheses
()(() 的答案为什么你认为是4呢?
c**w
发帖数: 1024
34
来自主题: JobHunting版 - Leetcode上Longest Valid Parentheses
噢。。。我发现我题目没看懂。。
谢谢,明白了 :P
b******i
发帖数: 914
35
来自主题: JobHunting版 - facebook面经
你好,很感谢你的面经,想就此问几个问题:
1. generate all possible parentheses, 这题为什么时间是O(n^2)呢?你是用的类似
于DP的方法做的吗?我看九章和careercup只是一个dfs的方法,复杂度感觉是指数的。
2. onsite 3里面10G文件那题的follow up,不是很懂你的答案:follow up是如果只有
400m怎么办,答案是把数字
hash一下或者说scan文件多次,每次取尾数bits不一样的数,不用code
hash每次取尾数bits不一样的数以后,是再如何找出其中所有不同的数呢?再哈希一遍?
这题careercup150上面有,好像是分block来做的。
谢谢
b******i
发帖数: 914
36
来自主题: JobHunting版 - facebook面经
你好,很感谢你的面经,想就此问几个问题:
1. generate all possible parentheses, 这题为什么时间是O(n^2)呢?你是用的类似
于DP的方法做的吗?我看九章和careercup只是一个dfs的方法,复杂度感觉是指数的。
2. onsite 3里面10G文件那题的follow up,不是很懂你的答案:follow up是如果只有
400m怎么办,答案是把数字
hash一下或者说scan文件多次,每次取尾数bits不一样的数,不用code
hash每次取尾数bits不一样的数以后,是再如何找出其中所有不同的数呢?再哈希一遍?
这题careercup150上面有,好像是分block来做的。
谢谢
a*********0
发帖数: 2727
37
是不是连续valid才行? 比如())() 最大是4还是2??
网上看到的算法有用stack,首尾2遍扫描,甚至dp,简直不知所云。一个count搞不定
??
T******e
发帖数: 157
38
挺巧,我今天又做了一遍那道题
要求是连续的,你给的情况的条件应该是2
a*********0
发帖数: 2727
39
连续的用count搞不定么??非要用stack?
A*********c
发帖数: 430
40
用stack是很自然的做法,看到匹配类的,我就像巴甫洛夫的狗一样想到stack。
你说的单counter应该不work。具体为什么得看你怎么写啊。
你写一个大伙分析一下。
a*********0
发帖数: 2727
41
class Solution {
public:
int longestValidParentheses(string s) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int n = s.length();
int maxl = 0;
int count = 0;
int len = 0;
for(int i = 0;i < n;i++){
if(s[i] == '('){
count++;
len++;
}
if(s[i] == ')') {
count--;
len++;
}
if(count == 0 ... 阅读全帖
n*****a
发帖数: 107
42
((())这个你返回几,应该是4;
还有这个 ()(),应该也返回4
k****i
发帖数: 128
43
ok,前后两边扫描呢?
l*****a
发帖数: 14598
44
一遍就可以为什么要两遍?
s****e
发帖数: 1180
45
来自主题: JobHunting版 - 借宝地问个面试中的sql的问题。
借宝地问个面试中的sql的问题。
We have two tables, students (student ID, student name, student age, student
zip) and courses (course name, course time) .
The information in the parentheses are the schema.
We want to get how many students enroll all the classes starting at 11:00 AM?
the interviewer mentioned something like many to many join.
the interviewer mentioned something like "dimensionalize" in SQL. I am
wondering who knows any SQL book on this, and can introduce it me?
Thank you so much for your consi... 阅读全帖
a**********0
发帖数: 422
46
来自主题: JobHunting版 - 发个我总结的unix常用命令
The Unix Commands
其实就是攒了一下网上的资料
# Create a new tar archive.
# the folder dirname/ is compressed into archive_name.tar
tar cvf archive_name.tar dirname/
# Extract from an existing tar archive
tar xvf archive_name.tar
# View an existing tar archive
tar tvf archive_name.tar
# Search for a given string in a file (case in-sensitive search).
grep -i "the" demo_file
# Print the matched line, along with the 3 lines after it.
grep -A 3 -i "example" demo_text
# Search for a given string in all files recur... 阅读全帖
a***e
发帖数: 413
47
第一次看到的时候没想到要push数组的位置,而不是push‘(’,结果怎么都做不出来。
后来看了讨论的idea是把Indices存起来,按照那个想法写了,却发现last的初值要设
成-1,而不是0。最后通过的答案,看着觉得好郁闷,想了好久。。。。。。。
int longestValidParentheses(string s) {
vector left;
int n=s.size();
int last=-1,lmax=0;
for (int i=0; i {
if (s[i]=='(')
{
left.push_back(i);
}
else if (s[i]==')')
{
if (left.empty())
{
... 阅读全帖
h*******e
发帖数: 1377
48
这道题最开始的想法是(也压栈,)也压栈,然后记录相应的index.不过后来发现似乎
)压栈没有必要只有最右边的)有用,就优化成最简那个形式了。
a***e
发帖数: 413
49
我在看讨论之前一直没想过记录相应的index,所以一直搞不定。估计还是题做太少
s******t
发帖数: 229
50
不用什么-1啊,压入index的想法在别的题里也有啊,比如histogram
首页 上页 1 2 3 4 5 6 7 下页 末页 (共7页)