由买买提看人间百态

topics

全部话题 - 话题: res
首页 上页 1 2 3 4 5 6 7 8 9 10 (共10页)
g********E
发帖数: 178
1
main function格式是按leetcode给的格式来得。如果我用new,写出来是这样吗?
void doinorder(TreeNode *root, vector * res){
...
*res.push_back(root->val);
}
vector* inorderTraversal(TreeNode *root){
vector *res = new vector;
...
return res;
}
w***y
发帖数: 6251
2
来自主题: JobHunting版 - leetcode的N queens II
要怎么做才能不超时?
我就是按照传统的N queens写法, 但是大集合到12就超时了
public class Solution {
int res=0;
public int totalNQueens(int n) {
int[] row = new int[n];
res=0;
_solveNQueens(row,0);
return res;
}


public void _solveNQueens(int[] row, int idx){
//when it finishes the last row, output the valid result
if(idx==row.length){
res++;
return;
}

... 阅读全帖
d******l
发帖数: 175
3
来自主题: JobHunting版 - 请教LeetCode的3Sum
大家好,我纠结这道题目一些时间了。期间用Java写了3个算法,在Judge Large的时候
都说超时。请教高人帮忙分析一下我的一个算法的复杂度(基于TwoSum的一个解法)。
非常感谢。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
public class Solution {
public ArrayList> twoSum(int[] numbers, int target) {
ArrayList> twoSumList = new ArrayList Integer>>();
Map map = new HashMap();
for (in... 阅读全帖
e*******i
发帖数: 56
4
来自主题: JobHunting版 - 求G加一题的线性解法
No map is needed. Source is as following:
///////////////
#include
using namespace std;
int findLongest(char *s, char **start)
{

if(!s) return 0;
char first, second;
char *beginOfPreviousChar;
int currMax=0;
char *curr=s;
first=*s;
*start=s;
while(*curr)
{
if(*curr!=first) break;
currMax++;
curr++;
}
if( !*curr ) return currMax; //end of string
else
{
second=*curr;
beginOfPreviousChar=curr... 阅读全帖
g***j
发帖数: 1275
5
来自主题: JobHunting版 - Longest Consecutive Sequence 问题释疑
Given an unsorted array of integers, find the length of the longest
consecutive elements sequence.
For example,
Given [100, 4, 200, 1, 3, 2],
The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length
Your algorithm should run in O(n) complexity.
我在网上看到了几段code,用到了set或者map,每次要在set或者map里面找到,然后删
掉,我想问,这样的code时间是n么?find in a set难道不是logn么?当然也有用到
map的,我觉得找元素都是logn啊,那么最终的时间就是nlogn啊,比如如下code
class Solution {
public:
int longestConsecutive(vector &num) {
// Start typing... 阅读全帖
a*****a
发帖数: 46
6
来自主题: JobHunting版 - leetcode上最搞笑的是这题
呀,是我眼花了,但是romantoint也不需要recursion或者那么多if啊。我的意思是,
一般面试题本身不是特别难的,考察的就是细节了。
这是我写的,yuren贴的那个更简洁些。
public int romanToInt(String s) {
HashMap map = new HashMap();
map.put('M', 1000);
map.put('D', 500);
map.put('C', 100);
map.put('L', 50);
map.put('X', 10);
map.put('V', 5);
map.put('I', 1);

int res = 0;
for (int i=0; i char c = s.charAt(i);
if ((c == 'C' || c == 'X' || c == 'I')
&... 阅读全帖
L*******e
发帖数: 114
7
来自主题: JobHunting版 - 问道题: prime factor
综合楼上的解答,我试着写了一个。
/**
* find all the prime up to n(including n)
*/
public static List findPrimes(int n){
List res = new ArrayList();
if (n <= 1) return res;
// create a boolean array to track whether a number
// is a prime or not
boolean[] primeTrack = new boolean[n+1];
for (int i = 2; i <= n; i++){
primeTrack[i] = true;
}
int upper = (int)Math.sqrt(n);
for (int i = 2; i <= upper; i++){
for (int j = i * i; j <= n; j +=... 阅读全帖
W**********i
发帖数: 136
8
来自主题: JobHunting版 - 问个递归的问题
请问一下这里, if(temp.size==k)
{
res.add(new ArrayList(temp));
return;
}
为啥要 res.add(new ArrayList(temp));? 为什么不是res.add(temp);?
我试过res.add(tem),输出的都是空的了
a*****a
发帖数: 46
9
来自主题: JobHunting版 - leetcode word break II DFS 超时
光用DP还不行,必须得等结束后回溯找所有路径才过了测试。。。
我在DP里存的是可能路径的所有节点(也可以只存上一个节点,但是那样回溯不好写)
,这样的话和仅DP的区别在于每次拷贝的只是节点,省掉的时间就是拷贝生成字符串的
时间。
呵呵,这测试真严格啊。C++的有没有可能不回溯也能过测试?
贴出code来,欢迎各位牛人指正~
private ArrayList getPath(String s, int n, ArrayList Integer>> pres) {
ArrayList res = new ArrayList();
for (int pre : pres.get(n-1)) {
if (pre == 0) {
res.add(s.substring(0, n));
} else {
ArrayList preres = getPath(s,... 阅读全帖
g*********e
发帖数: 14401
10
来自主题: JobHunting版 - leetcode Sort List
我的也很长,但不用每个recursion都寻找中间node的位置。
class Solution {
public:
ListNode *merge(ListNode *a, ListNode *b, ListNode *&last) {
ListNode *res=NULL;
ListNode *prev=NULL;
while(a && b) {
if(res==NULL)
res=(a->val < b->val) ? a:b;
if(a->val < b->val) {
if(prev)
prev->next=a;
prev=a;
a=a->next;
} else {
if(prev)
prev->next=b;... 阅读全帖
S******6
发帖数: 55
11
来自主题: JobHunting版 - 几道FG的面试题
探讨下,我觉得这道题目是为了找每个id下面链接id的weight和,要避免死循环。
所以我在您code基础上做了点修改:
void PrintSubTreeSum(vector > &Input)
{
int size = Input.size();
if(size == 0) return;
vector res(size, 0);
for(int i = 0; i < size; i++)
{
map mp;
res[i] += Input[i][2];
mp.push_back(Input[i][0]);
int p = Input[i][1];
while(mp.find(p) == mp.end())
{
mp.push_back(p);
res[i] += Input[p][2];
p = Input[p][1];
}
}... 阅读全帖
b*********s
发帖数: 115
12
来自主题: JobHunting版 - linkedin,rocketfuel, google面经若干

You are right. deque is much better. Below is the implementation using deque
def solve2(s, k):
from collections import deque
d = deque(maxlen=k + 1)
n = len(s)
if n <= k:
return ''
for i in xrange(k + 1):
while d and ord(d[-1][1]) > ord(s[i]):
if s[i] == '0':
break
d.pop()
d.append((i, s[i]))
res = []
for i in xrange(k + 1, n):
res.append(d.popleft()[1])
while d and d[0][0] < i - k:
... 阅读全帖
h*****7
发帖数: 60
13
试了 也过不了 如下:
class Solution:
# @return a list of lists of length 3, [[val1,val2,val3]]
def threeSum(self, num):
num.sort()
n = len(num)
res= []
if n<3:
return res
for i in range(n-2):
j = n-1
if i > 0 and num[i] == num[i-1]:
continue
k = i + 1
while k < j:
sum = num[i] + num[j] + num[k]
if sum < 0:
k += 1
el... 阅读全帖
l****r
发帖数: 118
14
来自主题: JobHunting版 - 杯具!越改越差
Anagrams 那道题,谢谢大家帮忙review。
public ArrayList anagrams(String[] strs) {

ArrayList res = new ArrayList();
boolean[] added = new boolean[strs.length];
for(int i = 0; i< added.length; i++)
added[i] = false;

if (strs == null)
return null;
if (strs.length <=1)
return res;
Hashtable map = new Hashtable();

for(int i = 0; ... 阅读全帖
a********e
发帖数: 53
15
class Solution {
public:
Write a function to find the longest common prefix string amongst an array
of strings.
The Time complexity is O(logM * N), while M is the size of strs, N is the
shortest length of the str in the strs
而我觉得这个时间复杂度应该是O(MN). 因为isEqual()的复杂度应该是O(M), as T(M
) = 2T(M/2) + O(1). 谢谢。
============================
bool isEqual(vector &strs, int index, int start, int end) {
if(end < start) return true;
if(end == start) {
if(strs[start].size() > index) return ... 阅读全帖
h*******r
发帖数: 3
16
来自主题: JobHunting版 - G家已挂 分享一下面经
就字符串转化为数组那个题,其实我之前也碰到过,当时店面对方还加入了back slash
的可能性,当时这个题做得挺糟糕的。
后来我仔细想了一下,发现这类转化条件很多,分化很细很杂的程序统一可以用state
machine来辅助解决。
下面贴个针对该题的代码,画图3分钟,实现10分钟,当然自己还调试了5分钟让它能跑。
希望这种解法能对楼主有点用。
vector stringToStringArray(string s){
vector res;
int state = 0;
string e;
for (int i = 0; i < s.length(); i++){
switch(state){
case 0:
switch(s[i]){
case ' ':
break;
case '"':
... 阅读全帖
x******0
发帖数: 178
17
来自主题: JobHunting版 - sliding window max
虽然是老题,但是写起来还是很费劲,唉。。
public static ArrayList SlidingWindowMax(int[] arr, int windowSize){
//edge case

ArrayList res = new ArrayList();
ArrayDeque indexQ = new ArrayDeque();
for (int i = 0; i < windowSize; i++){
while (!indexQ.isEmpty() && arr[i] > indexQ.getLast()){
indexQ.pollLast();//only keep possible max
}
indexQ.add(i);
}

for (int i... 阅读全帖
j********8
发帖数: 10
18
来自主题: JobHunting版 - find kth element in n*n sorted matrix
//Best first search, time complexity O(klog(n)). The size of heap is at most
2*n. Every time an element is popped from the heap or inserted to the heap,
O(log(n)). We need to do the pop and insert operations k times. So the time
complexity is O(klog(n)).
//Space complexity O(n), because there are at most 2*n nodes in the priority
queue.
struct node
{
int index;
int val;
node(int index_, int val_): index(index_), val(val_){}
bool operator > (const node& other) const
{
... 阅读全帖
j********8
发帖数: 10
19
来自主题: JobHunting版 - find kth element in n*n sorted matrix
//Best first search, time complexity O(klog(n)). The size of heap is at most
2*n. Every time an element is popped from the heap or inserted to the heap,
O(log(n)). We need to do the pop and insert operations k times. So the time
complexity is O(klog(n)).
//Space complexity O(n), because there are at most 2*n nodes in the priority
queue.
struct node
{
int index;
int val;
node(int index_, int val_): index(index_), val(val_){}
bool operator > (const node& other) const
{
... 阅读全帖
T*******e
发帖数: 4928
20
算了,给你贴一个: http://www.itint5.com/oj/#26
int getNumber(const string &expr, int &pos){
int num=0;
while(expr[pos]&&expr[pos]<='9'&&expr[pos]>='0'){
num=num*10+expr[pos++]-'0';
}
return num;
}
//返回表达式expr的值
int evaluate(const string& expr) {
int res=0;
int size=expr.size();
if(size==0) return res;
vector v;
int pos=0;
v.push_back(getNumber(expr, pos));
while(pos char op=expr[pos++];
int num=getNumber(expr, pos);
... 阅读全帖
r*******k
发帖数: 1423
21
来自主题: JobHunting版 - leetcode 的two sum
果然,赞
public class Solution {
public int[] twoSum(int[] numbers, int target) {
int[] res = new int[2];
HashMap scannedList = new HashMap >();
for(int i = 0; i int tmp = numbers[i];
if (scannedList.get(target - tmp)!=null){
res[0] = scannedList.get(target - tmp);
res[1] = i+1;
} else {
scannedList.put(numbers[i], i+1);
... 阅读全帖
p****6
发帖数: 724
22
来自主题: JobHunting版 - 非死不可电面出了新花样
先遍历, 边遍历边给每个节点一个index, 比如root为0, 做left减1, right加1. 然后
建立一个HashMap, key是index, value是list
贴个java版本的
public List> printVertical1(TreeNode root){

List> res = new ArrayList>();
if(root == null)
return res;

Map> map = new HashMap TreeNode>>();
getVertical(root, map, 0);

Set keys = new TreeSet(map.keySet());
... 阅读全帖
f**********t
发帖数: 1001
23
来自主题: JobHunting版 - 这里牛人多再问个难题
写个暴力的,要求状态DP的地方高攀不起
void NumOfBoardLayouts(vector> &board, size_t x, size_t y, int
*res) {
//for 1 * 2 board
size_t row = board.size();
size_t col = board[0].size();
if (x == row) {
++*res;
return;
}
for (size_t i = x; i < row; ++i) {
for (size_t k = y; k < col; ++k) {
if (board[i][k] == true) {
continue;
} else {
if (k + 1 < col && board[i][k + 1] == false) {
board[i][k] = true;
board[i][k + 1] = true;
... 阅读全帖
f**********t
发帖数: 1001
24
来自主题: JobHunting版 - 一道面试题
bool UniqueBTrees(Node *root, vector &res, unordered_set &us) {
unordered_set lus;
unordered_set rus;
if ((!root->left || UniqueBTrees(root->left, res)) &&
(!root->right || UniqueBTrees(root->right, res)) &&
lus.find(root->val) == lus.end() &&
rus.find(root->val) == rus.end()) {
res.push_back(root);
for (int x : lus) {
us.insert(x);
}
for (int y : lus) {
us.insert(y);
}
us.insert(root->val);
return true;
} el... 阅读全帖
s******6
发帖数: 57
25
来自主题: JobHunting版 - Google onsite 题目求助
两个指针
int longestSubstr(string s) {
int count[256];
memset(count, 0, sizeof(count));
int cnt = 0;
int i = 0;
int res = 0;
for(int j=0; j count[s[j]] ++;
if(count[s[j]] == 1) cnt ++;
while(cnt > 2) {
count[s[i]] --;
if(count[s[i]] == 0) cnt --;
i ++;
}
res = max(res, j-i+1);
}
return res;
}
s******6
发帖数: 57
26
来自主题: JobHunting版 - Google onsite 题目求助
就是两个指针+一个计数的,假设是string是 acsii
int longestSubstr(string s) {
int count[256];
memset(count, 0, sizeof(count));
int cnt = 0;
int i = 0;
int res = 0;
for(int j=0; j count[s[j]] ++;
if(count[s[j]] == 1) cnt ++;
while(cnt > 2) {
count[s[i]] --;
if(count[s[i]] == 0) cnt --;
i ++;
}
res = max(res, j-i+1);
}
return res;
}
f**********t
发帖数: 1001
27
// Given an int array A[], define: distance=A[i]+A[j]+(j-i), j>=i. Find max
distance in A[]?
int maxDistance(int A[], int n) {
if (n < 1)
return INT_MIN;
int res = A[0];
int idx = 0;
for (int i = 1; i < n; ++i) {
res = max(A[i] + A[idx] + (i - idx), res);
if (A[idx] + (i - idx) < A[i]) {
idx = i;
}
}
return res;
}
b*********s
发帖数: 115
28
来自主题: JobHunting版 - 请大牛解释一下leetcode新题
def maxProduct(self, a):
if not a:
return 1
res = max_e = min_e = a[0]
for x in a[1:]:
candidates = [max_e * x, min_e * x, x]
max_e = max(candidates)
min_e = min(candidates)
res = max(res, max_e)
return res
k****r
发帖数: 807
29
这道题当时c++时简单的就实现了,但是类似的,我用java就不对,具体代码是这样的
public class Solution {
public int sumNumbers(TreeNode root) {
int result = 0;
int tmp = 0;
sumHelp(root, tmp, result);
return result;
}
private void sumHelp(TreeNode root, int tmp, int sum){
if (root == null) return;
if (root.left == null && root.right == null){
int newone = tmp + root.val;
sum = sum + newone;
}
if (root.right != null) sumHelp(root.right,... 阅读全帖
f*******w
发帖数: 1243
30
来自主题: JobHunting版 - 问两道onsite题目
写了一下第二题,O(k),用hash来实现swap..
vector randomPick(vector > &input, int k) {
int n = input[0].size(), total = input.size() * n;
unordered_map visited;
vector res; int start = 0;
for (int i = 0; i < k; ++i) {
int pos = rand() % (total - start) + start;
int x = pos / n, y = pos % n;
if (visited.find(pos) != visited.end()) {
res.push_back(visited[pos]);
int tmp = visited[pos];
visited[pos] = (visi... 阅读全帖
H******7
发帖数: 1728
31
class Solution {
public:
int res;

bool isValid(int A[], int r){
for (int i=0;i if ( (A[i]==A[r])||(abs(A[i]-A[r])==(r-i))){
return false;
}
}
return true;
}
void nqueens(int A[], int cur, int n){
if (cur==n){ res++;return;}
else{
for (int i=0;i A[cur]=i;
if (isValid(A,cur)){
nqueens(A,cur+1,n);
}
... 阅读全帖
S*******C
发帖数: 822
32
public List inorderTraversal(TreeNode root) {
List res = new ArrayList();
if (root == null)
return res;
Stack stack = new Stack();
TreeNode p = root;
while (!stack.isEmpty() || p != null) {
// if it is not null, push to stack
//and go down the tree to left
if (p != null) {
stack.add(p);//stack.push(p);
p = p.left;
} els... 阅读全帖
x*******6
发帖数: 262
33
来自主题: JobHunting版 - 刚刚FB电面试完
贡献一个code,由于没有乘除,只需要记录括号内是否要根据加减改变数字的符号,不
需要使用reverse polish notation解法。
public static int eval(String s, int x) {
String[] exp = s.split("=");
int[] left = helper(exp[0],x);
int[] right = helper(exp[1],x);
return (left[0] - right[0])/(right[1]-right[0]);
}
private static int[] helper(String s, int x) {
boolean positive = true;
Stack re = new Stack();
re.push(false);
int num = 0;
int y = 0;
... 阅读全帖
a***e
发帖数: 413
34
平时几乎不用c++,有没有哪位同学帮看看怎么能让这段程序通过编译?我觉得自己思
路是对了的,不知道如果面试中碰到这种情况是否影响?没觉得哪里template用错了啊
?多谢
主要是在
Point x(a,b);
std::map::iterator it=mp.find(x);
if (it==mp.end())
mp.insert(std::pair(x,1));
else
mp[x]++;
/**
* Definition for a point.
* struct Point {
* int x;
* int y;
* Point() : x(0), y(0) {}
* Point(int a, int b) : x(a), y(b) {}
* };
*/
class Solution {
public:
int maxPoints(vec... 阅读全帖
a***e
发帖数: 413
35
多谢。
改了改,还是通不过,看来得VS里面debug去了
/**
* Definition for a point.
* struct Point {
* int x;
* int y;
* Point() : x(0), y(0) {}
* Point(int a, int b) : x(a), y(b) {}
* };
*/
class Solution {
public:
int maxPoints(vector &points) {
int n=points.size();
if (n==0) return 0;
double a=0,b=0;
map, int> mp;
int x1,x2,y1,y2;

for (int i=0; i {
for (int j=i+1;j {
... 阅读全帖
t*******y
发帖数: 22
36
来自主题: JobHunting版 - 请问这道题如何做?Zero-one multiple
int zero_one_multiple(int k){
vector > reminder;
for(int i=1;; i *= 10){
if(i%k==0) return i;
int pre_size=reminder.size();
vector r_i;
r_i.push_back(i);
r_i.push_back(i%k);
reminder.push_back(r_i);
for(int j=0;j vector r = reminder[j];
int sum = i%k+r.back();
if(sum == k){
int res = 0;
for(int m=0;m ... 阅读全帖
g*******e
发帖数: 107
37
来自主题: JobHunting版 - 请问这道题如何做?Zero-one multiple
public zero_one_multiple(int N){
HashMap> map=new HashMap Integer>> ();
int jj=0;
ArrayList remain=new ArrayList();
remain.add(0);
long resD=1;
while (resD int residue=(int) (resD%N);
if (residue==0) return resD;
jj++;
int size=remain.size();
for (int i=0; i int tmp=remain.get(i)+residue;
if ((tmp%N)==0) {
ArrayList res... 阅读全帖
f**********t
发帖数: 1001
38
// Given a dictionary of words, how can we efficiently find a pair words s.t
. they don't have characters in common and sum of their length is maximum?
size_t MaxLengthSumOfDistinctPairs(vector vs) {
vector char2str[26];
for (size_t i = 0; i < vs.size(); ++i) {
for (char c : vs[i]) {
char2str[c - 'a'].push_back(i);
}
}
size_t res = 0;
for (size_t i = 0; i < vs.size(); ++i) {
unordered_set dups;
for (char c : vs[i]) {
for (size_t k : char... 阅读全帖
d****n
发帖数: 397
39
来自主题: JobHunting版 - lintcode delete digits怎么做?
DP
python solution
class Solution:
"""
@param A: A positive integer which has N digits, A is a string.
@param k: Remove k digits.
@return: A string
"""
def DeleteDigits(self, A, k):
# write you code here
l = len(A)
S = [['' for j in range(k + 1)] for i in range(l + 1)]
T = ''
for j in range(0, k + 1):
S[j][j] = ''
for i in range(1, l + 1):
T += A[i - 1]
S[i][0] = T
for j in range(1... 阅读全帖
d****n
发帖数: 397
40
来自主题: JobHunting版 - lintcode delete digits怎么做?
DP
python solution
class Solution:
"""
@param A: A positive integer which has N digits, A is a string.
@param k: Remove k digits.
@return: A string
"""
def DeleteDigits(self, A, k):
# write you code here
l = len(A)
S = [['' for j in range(k + 1)] for i in range(l + 1)]
T = ''
for j in range(0, k + 1):
S[j][j] = ''
for i in range(1, l + 1):
T += A[i - 1]
S[i][0] = T
for j in range(1... 阅读全帖
a*********0
发帖数: 2727
41
vector> 2sumSum(vector& a)
{
vector> res;
size_t n=a.size();
if(n<4) return res;

unordered_map>> umap;
for(size_t i=0;i for(size_t j=i+1;j int sum=a[i]+a[j];
if(umap.find(sum)!=umap.end()) {
for(auto e: umap[sum]){
res.push_back({i,j, e.first, e.second});
}
}

umap[sum].push_back(mak... 阅读全帖
t**r
发帖数: 3428
42
来自主题: JobHunting版 - topcoder- strange country problem.
贴个答案
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
const long long LINF = (5e18);
const int INF = (1<<30);
#define EPS 1e-6
const int MOD = 1000000007;
using namespace std;
class StrangeC... 阅读全帖
x*******9
发帖数: 138
43
nested_list = [[1,2], 1, [2, [2,1]]]
def revSum(nlist):
(depth, res) = dfs(nlist)
return res
def dfs(nlist):
nlist_sum = 0
s = 0
max_lv = 1
for item in nlist:
if isinstance(item, list):
(depth, res) = dfs(item)
nlist_sum += res
max_lv = max(max_lv, depth + 1)
else:
s += item
nlist_sum += s * max_lv
return (max_lv, nlist_sum)
print revSum(nested_list)
(已加入肯德基豪华午餐
x*******9
发帖数: 138
44
nested_list = [[1,2], 1, [2, [2,1]]]
def revSum(nlist):
(depth, res) = dfs(nlist)
return res
def dfs(nlist):
nlist_sum = 0
s = 0
max_lv = 1
for item in nlist:
if isinstance(item, list):
(depth, res) = dfs(item)
nlist_sum += res
max_lv = max(max_lv, depth + 1)
else:
s += item
nlist_sum += s * max_lv
return (max_lv, nlist_sum)
print revSum(nested_list)
(已加入肯德基豪华午餐
c******h
发帖数: 46
45
就是说 {1,2} 的weight 是1了对吧 因为nlist_sum没有乘max_lv
我觉得是对的
2L说{1,2} weight是2不知道为啥

nested_list = [[1,2], 1, [2, [2,1]]]
def revSum(nlist):
(depth, res) = dfs(nlist)
return res
def dfs(nlist):
nlist_sum = 0
s = 0
max_lv = 1
for item in nlist:
if isinstance(item, list):
(depth, res) = dfs(item)
nlist_sum += res
max_lv = max(max_lv, depth + 1)
else:
s += item
nlist_sum += s * max_lv
return (max_lv, nlist_sum)
p... 阅读全帖
a*********0
发帖数: 2727
46
来自主题: JobHunting版 - 献码:Repeated DNA Sequences
class Solution {
public:
vector findRepeatedDnaSequences(string s) {
int map[4];
std::fill(map, map+4, 0);
vector res;
set keySet;
multimap mmap;
if(s.size()<10) return res;

for(int i=0;i map[toInt(s[i])]++;
if(i>=9){
if(i>=10){
map[toInt(s[i-10])]--;
}
string ss=toString(map);
... 阅读全帖
C****t
发帖数: 53
47
来自主题: JobHunting版 - 问个snapchat的面经题dfs优化的题
一个hashtable就好, key为元素,value为两个数【重复次数,visited的状态】
def total(nums, tar):
maps = {}
res = 0
for ele in nums:
if ele not in maps:
maps[ele] = [1,0]
else:
maps[ele][0] += 1
for ele in nums:
if maps[ele][1] = 1: continue
diff = tar - ele
if diff not in maps: continue
rep1, rep2 = maps[ele][0], maps[diff][0]
if ele == diff and rep1 > 1:
res += rep1*(rep1-1)//2
elif ele != diff:
... 阅读全帖
S*******C
发帖数: 822
48
来自主题: JobHunting版 - Find a sub tree with min weight怎么做
the weight of a tree = sum of weight of all node in the tree. Weight of node
= value of node * level of the node in the tree。
这里的代码能计算weight
public int findWeight(TreeNode root) {
int res = 0;
if (root == null)
return res;
List curLevel = new ArrayList();
curLevel.add(root);
int level = 1;
while (!curLevel.isEmpty()) {
for (TreeNode p : curLevel)
res += p.val * level;
level... 阅读全帖
f*******5
发帖数: 52
49
多谢楼主回复!我的代码确实没考虑到a或者b是lca的情况。找到a或者b之后应该继续
递归,在递归左右子树的过程中保存path,因为当前节点的path取决于左右子树中是否
找到另一个b。下面是代码,假设a或b其中一个为空时候返回空path
很羡慕楼主拿到G的offer,能去G是我一直的梦想,衣带渐宽终不悔,为伊消得人憔悴
,hehe
int lca_p(TreeNode* root, TreeNode* a, TreeNode* b, vector& path){
if(!root) return 0;
vector l_path;
vector r_path;
int l = lca_p(root->left, a, b, l_path);
int r = lca_p(root->right, a, b, r_path);
vector temp;
if(l == 2) path = l_path;
else if(r == 2) path = r_path;
else{
... 阅读全帖
h*********8
发帖数: 73
50
来自主题: JobHunting版 - Linkedin八月onsite面经
public int[] findRange(int[] arr, int target) {
int[] res = new int[2];
int l = 0;
int r = arr.length - 1;
while (l <= r) {
int m = (l+r)/2;
if (arr[m] < target) l = m + 1;
else r = m - 1;
}
if (l >= arr.length) return new int[] {-1, -1};
res[0] = l;
l = 0;
r = arr.length - 1;
while (l <= r) {
int m = (l+r)/2;
if (arr[m] > target) r = m - 1;
else l = m + 1;
}
res[1] = r;
return res;
}
首页 上页 1 2 3 4 5 6 7 8 9 10 (共10页)