由买买提看人间百态

topics

全部话题 - 话题: backtrack
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
i**********e
发帖数: 1145
1
楼上说了,DP 是最优的。
上次实现的是最容易想到的 backtrack + trie 来剪枝优化。虽然测试了一个字典,不
到一秒就出结果,theoretical worst case复杂度还是exponential 的。
这里给你做参考:
http://www.mitbbs.com/article_t/JobHunting/31926643.html
i**********e
发帖数: 1145
2
楼上说了,DP 是最优的。
上次实现的是最容易想到的 backtrack + trie 来剪枝优化。虽然测试了一个字典,不
到一秒就出结果,theoretical worst case复杂度还是exponential 的。
这里给你做参考:
http://www.mitbbs.com/article_t/JobHunting/31926643.html
p*****2
发帖数: 21240
3
来自主题: JobHunting版 - Another DP Problem: Balanced Partition

backtrack我的solution里边有。
b********g
发帖数: 43
4
public void solveSudoku(char[][] board) {
// Start typing your Java solution below
// DO NOT write main() function
solveSudoku(board,0,0);
}

private boolean isConsistent(char[][] board, int col, int row, int n) {
for(int i=0;i<9;i++)
if(board[i][col]==(n+'0'))
return false;
for(int j=0;j<9;j++) {
if(board[row][j]==(n+'0'))
return false;
}
//check small box
int bo... 阅读全帖
h****e
发帖数: 928
5
来自主题: JobHunting版 - 讨论一道面试题
各个方向都要试过去。BFS/DFS + backtracking
类似的题目很多:
http://www.geeksforgeeks.org/archives/13376
p**e
发帖数: 533
6
来自主题: JobHunting版 - 讨论一道面试题
如果一个节点的两个子节点分别是右边的和下面的,感觉BFS或者DFS就可以了,
需要backtracking跟他们相结合吗?一起用的优势是什么?
另外,BFS或者DFS是不是很多节点都被扫过多次?有没有办法保证只扫过一次?
U*********y
发帖数: 54
7
来自主题: JobHunting版 - 转划单词题的优解
题目: transform one word into another, 1 letter at a time, each step must
be
in the dictionary.
CareerCup的BFS解看起来很麻烦, 既然没要求最短距离转换或得出所有可能转换, 就写
了个DFS+backtracking的解, 请指教!
[code]
unordered_set dict; //dictionary
bool validTran(string &a, string &b, int d, unordered_map string> &path) {
if(a == b) {
return 1;
}
if(d == b.size()) return 0;
if(a[d] == b[d]) { //no change at this position is needed
return validTran(a, b, d+1, path);
}
for(char ... 阅读全帖
D********g
发帖数: 650
8
来自主题: JobHunting版 - 一道G家店面题
20分钟写了大约下面的code,如果要输出string,还要backtrack:
static String word2Anagram(final String word) {
if (word == null) {
return null;
}

int ht[] = new int[256];
for (int i = 0; i < word.length(); ++i) {
int charVal = (int) word.charAt(i);
ht[charVal] ++;
}

StringBuilder anagram = new StringBuilder();
for (int i = 0; i < ht.length; ++i) {
if (ht[i] > 0) {
anagram.append((cha... 阅读全帖
D********g
发帖数: 650
9
来自主题: JobHunting版 - 一道G家店面题
加上了backtracking:
static class DPElement {
int value;
int prevCostIdx; // 0-based cost idx
int takenThisElement; // 0/1, indicating whether taking current
element, idx 0 based.
public DPElement() {
value = 0;
prevCostIdx = 0;
takenThisElement = 0;
}
}
static String word2Anagram(final String word) {
if (word == null) {
return null;
}

int ht[] = new int[256];
f... 阅读全帖
z****h
发帖数: 164
10
lz能否透露一下那些签了NDA的面试题的范围是什么?不用很具体,类似 有没有dp, 有
没有backtrack,有没有150, leetcode之外的题?
谢谢先
t**********h
发帖数: 2273
11
来自主题: JobHunting版 - Minimum Window Substring
这个是dp吧,然后backtracking?

中某
f*********m
发帖数: 726
12
Print All Combinations of a Number as a Sum of Candidate Numbers
http://www.leetcode.com/2010/09/print-all-combinations-of-number-as-sum.html
原文如下,稍作修改(把target 从7该为9):
“To search for all combination, we use a backtracking algorithm. Here, we
use the above example of candidate={2,3,6,7} and target=9.
First, we start with a sum of 0. Then, we iterate over all possibilities
that can be added to sum, which yields the possible set of sum={2,3,6,7}.
Assume now that sum=2, we continue adding all poss... 阅读全帖
S*******e
发帖数: 379
13
把matrix每个格子作为起始点,递归尝试每个方向,用一个extra matrix记录到过的点。
每visit一个点,跟字典比较是不是合法的单词。
如果字典保存在trie里,递归的时候可以terminate的早一点。
有其他更好的解法吗?
S*******e
发帖数: 379
14
顶一下,哪位大牛能帮忙confirm一下?

点。
S*******e
发帖数: 379
15
把matrix每个格子作为起始点,递归尝试每个方向,用一个extra matrix记录到过的点。
每visit一个点,跟字典比较是不是合法的单词。
如果字典保存在trie里,递归的时候可以terminate的早一点。
有其他更好的解法吗?
S*******e
发帖数: 379
16
顶一下,哪位大牛能帮忙confirm一下?

点。
p*****2
发帖数: 21240
17

b*******e
发帖数: 217
18
来自主题: JobHunting版 - 请教leetcode Subsets II
Simply backtracking problem? Sure dfs ok for this kind of problem
在 flynewdream (fly) 的大作中提到: 】
all
b*******e
发帖数: 217
19
来自主题: JobHunting版 - 请教leetcode Subsets II
Simply backtracking problem
在 flynewdream (fly) 的大作中提到: 】
all
a*******y
发帖数: 1040
20
来自主题: JobHunting版 - shortest path in matrix
You have a matrix of size n*n with entries either 1 or 0. 1 means there is a
path, 0 means no path. Find shortest path and print it from (0,0) to (n-1,
n-1)
这个我觉得用backtrack,但是keep那个path有点麻烦,假如你在某一点发现路径走的
cell数目相同,你怎么update那个path?任选一个?
p*****2
发帖数: 21240
21
来自主题: JobHunting版 - shortest path in matrix

because
backtrack.
p*****2
发帖数: 21240
22
来自主题: JobHunting版 - shortest path in matrix

to
不是说了backtrack吗?
f*********m
发帖数: 726
23
来自主题: JobHunting版 - 问个括号问题的迭代解法
非常感谢。
是不是有些backtracking的意思?或者树生长的意思?
result恢复到以前的某个状态(对应stack最后一个元素的内容所指的前一个配置),
然后根据stack最后一个元素的内容继续生长树(继续配置)?

1
g****y
发帖数: 240
24
来自主题: JobHunting版 - 问个括号问题的迭代解法
是的,有点backtracking的意思。回复到某个状态就绪生长。
D**f
发帖数: 439
25
来自主题: JobHunting版 - 一道2D array的题
愿闻其祥,我觉得只能是backtracking,除了暴力破解没别的方法吧。
p*****2
发帖数: 21240
26
来自主题: JobHunting版 - 请教一个找DP路径问题

backtrack吧?
c********t
发帖数: 5706
27
用backtracking + recursion是O(n)时间,O(1)空间吗?
我的48个case都过了,但是judge large超时了!
c********t
发帖数: 5706
28
用backtracking + recursion是O(n)时间,O(1)空间吗?
我的48个case都过了,但是judge large超时了!
N*********6
发帖数: 4372
29
来自主题: JobHunting版 - 请教onsite一道题
个人觉得既然正负都无所谓的话,四个象限的情形都可以
映射到第一象限,应该可以证明从其他象限绕的valid path
都可以通过在第一象限走到目的地,而且path相对比较短
所以只考虑第一象限的情形,四个方向可以简化为只能往右
和往上走,这样就和经典的robot moving problem 一样了
用dp可以找出总共有多少条路径,backtracking可以打印或者
计算总共的路径,这道题不需要算总数和打印,只需要算其
中一条valid path的长度,相对简单一些
参见
http://prpds.blogspot.com/2011/07/robot-in-nxn-grid_18.html
以及career cup里面的moving robot 例子

K
到(
N*********6
发帖数: 4372
30
来自主题: JobHunting版 - 请教onsite一道题
个人觉得既然正负都无所谓的话,四个象限的情形都可以
映射到第一象限,应该可以证明从其他象限绕的valid path
都可以通过在第一象限走到目的地,而且path相对比较短
所以只考虑第一象限的情形,四个方向可以简化为只能往右
和往上走,这样就和经典的robot moving problem 一样了
用dp可以找出总共有多少条路径,backtracking可以打印或者
计算总共的路径,这道题不需要算总数和打印,只需要算其
中一条valid path的长度,相对简单一些
参见
http://prpds.blogspot.com/2011/07/robot-in-nxn-grid_18.html
以及career cup里面的moving robot 例子

K
到(
C***U
发帖数: 2406
31
如果用的是vector而不是数组的话 无法通过online judge large
哪里可以再优化一下啊?
谢谢了
int placeQueens(int n) {
int count = 0;
int *positions = new int[n];
int p = 0;
positions[p] = 0;
int i = 0;
while(!(p == -1 && i == n)) {
bool flag = true;
while(flag && i < n) {
int j = 0;
while(j < p + 1) {
if(positions[j] == i || positions[j] - i == j - (p + 1)||
positions[j] - i == p + 1 - j) {
break;
}
... 阅读全帖
C***U
发帖数: 2406
32
yes. you can try it.
but not perfect.
used 900 millisecond
c****9
发帖数: 164
33
刚刚写的,不知道算是DP还是recursive,基本上是brute force
bool checkpos(vector& cur, int pos)
{
for(int i=0;i {
for(int j=0;j {
if(cur[i][j] =='Q')
{
if(j==pos)
{
return false;
}
else if(i+j == pos + cur.size())
{
return false;
... 阅读全帖
b*****x
发帖数: 48
34
为什么不算perfect?
C***U
发帖数: 2406
35
900 milliseconds
那个judge large总共也没几个例子
我不知道算不算慢
c********t
发帖数: 5706
36
赞,是不是字符的permutation问题一般都是用dfs+backtracking来解决?

pqrs
c********t
发帖数: 5706
37
来自主题: JobHunting版 - F家电面
不懂,你是说遍历,并用backtracking的方法存下两个node所在的path (list),
然后在两个list里找最后的共同node吗?
空间复杂度是多少?
b***m
发帖数: 5987
38
来自主题: JobHunting版 - 贡献一道题

参考8皇后backtrack的解法。
h****n
发帖数: 1093
39
来自主题: JobHunting版 - 贡献一道题
写了一个,没测,楼主测测有问题告诉我
bool isWord(string s)
{
if(s=="this") return true;
if(s=="is") return true;
if(s=="desk") return true;
if(s=="top") return true;
if(s=="desktop") return true;
return false;
}
void Helper(string &inputS, int start, string &tmpStr, vector &res)
{
if(start == inputS.size())
{
//删除多余的空格
tmpStr.erase(tmpStr.end()-1);
res.push_back(tmpStr);
//补回来以便正确的backtracking
tmpStr.push_back(' ');
return;
}
int i;
stri... 阅读全帖
r**d
发帖数: 90
40
来自主题: JobHunting版 - 贡献一道题
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static private bool isWord(string s)
{
switch (s)
{
case "this":
case "is":
case "a":
case "all":
case "some":
case "allsome":
return true;
}
return fal... 阅读全帖
k****r
发帖数: 807
41
来自主题: JobHunting版 - 一道字符串题目
目测的话,我想用recursive+backtrack
分情况的, 我简单写了下,请指正
bool matchwords(char* word1, char* word2, int index1, int index2) {
if (index1 == strlen(word1)&& index2 == strlen(word2)) return true;
else {
if (word2[index2] == '*') {
if (matchwords(word1, word2, index1+1, index2+1)) return true;
else if (matchwords(word1, word2, index1+1, index2)) return true;
else if (word2[index2] == '?') {
return matchwords(word1, word2, index1+1, index2+1);
else {
... 阅读全帖
g*******r
发帖数: 44
42
思路就是backtracking,做到bug-free有点难啊。 哪位有简洁明了的代码啊?好学习一
下。
x*********s
发帖数: 2604
43
用backtracking会更简洁些
c********t
发帖数: 5706
44
Backtracking怎么解?

★ 发自iPhone App: ChineseWeb 7.7
m*******1
发帖数: 77
45
来自主题: JobHunting版 - A onsite 悲剧
把标题改了更符合版上的规范。
————————————————————————————
上周四的onsite, retail 组,四个面试官,前两个是印度人,
第一个让写一个hashmap, 我用linkedlist处理collision, 然后按照cracking code 上
面讲的写了一个非常简单的hash 函数,他说太简单,我后来改了一个复杂些的,用每
一个char * i *13再求和构建。然后问了一些java的基本题目,都答了上来。
第二个让解决一个迷宫,先问我用什么数据结构,我先说数组,他不满意,后来我说可
以用图,然后类似于BFS来进行查找,同时保持一个backtrack map来记录路径。然后写
代码。
后两个是美国人
第三个写populate 同一层的二叉树,可以非常稀疏,我写了出来,无bug。然后问了
2sum, 3sum,都答了上来。然后问了machine learning基本知识,也都答了上来。
第四个是系统设计和分析,包括判断哪里出问题以及策略等。最后一个问题我想了一段
时间,我们出了面试房间到厨房继续,十几分钟后我想了出来,然后就结束了。
今天收到电话,悲... 阅读全帖
c********t
发帖数: 5706
46
来自主题: JobHunting版 - F家一题
嗯,对,DFS, BFS都可以,如果写backtracking+recusion,DFS容易些。
没收官。收了一个电锯,一个面具。
c********t
发帖数: 5706
47
Queens的题都是用backtracking+recursion吧?
N-Queens II与N-Queens 解法有什么不同?除了更简单,因为不用存结果.
M********5
发帖数: 715
48
我好心地准备了差不多3个多月了,就等着google的电面,150,leetcode,
geeksforgeeks,差不多都写了一遍,看到题目了都能够马上come up with an idea,
结果这个人,根本就不按照常理出牌!什么都没有考到!什么tree,linkedlist,
graph,string processing,recursion, backtrack, dynamic programming, TCP/IP
,通通没有考,考了几个不知道从哪个犄角旮旯找出来的问题!!!没有天理啊!!!
末了跟我说,你可以去跟recruiter去抱怨?????!!!!!
几个月的辛苦就这样泡汤了。。。
题目就不能剧透了,反正是些很边边角角你从来都没有想到过会复习到那种地方的,关
键是根本就不是algorithm design的题目
如果我挂了,我可以跟recruiter反映了再重新面试一遍吗?我有点觉得这个人就是搞
那种很偏的东西的geek。。。
f*****7
发帖数: 92
49
我个人不喜欢swap的方法,自己没法理解
排序,然后跳过重复元素
希望能帮上你
class Solution {
public:
vector > permuteUnique(vector &num) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
sort(num.begin(), num.end());
int len = num.size();
int* path = (int*) malloc(sizeof(int) * len);
bool* visited = (bool*) malloc(sizeof(int) * len);
memset(visited, false, sizeof(bool) * len);
vector > bigList;
int... 阅读全帖
c*******r
发帖数: 309
50
来自主题: JobHunting版 - Leetcode Combination Sum复杂度
For example, given candidate set 2,3,6,7 and target 7,
A solution set is:
[7]
[2, 2, 3]
这题如果用backtrack来做的话复杂度是多少? 感觉是O(N^2)
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)