由买买提看人间百态

topics

全部话题 - 话题: vals
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
p*****2
发帖数: 21240
1
来自主题: JobHunting版 - 请教这么一个题:BST maximum sum path

我写了一下,大数据有run time error.
int[] dfs(TreeNode root)
{
int[] ans=new int[2];
Arrays.fill(ans, Integer.MIN_VALUE);
if(root!=null)
{
int[] l_ans=dfs(root.left);
int[] r_ans=dfs(root.right);

ans[0]=Math.max(l_ans[0], r_ans[0]);
ans[1]=Math.max(l_ans[1], r_ans[1]);
ans[1]=ans[1]<0?root.val:root.val+ans[1];

int m=root.val;
if(l_ans[1]>0)
m+=... 阅读全帖
g*****e
发帖数: 282
2
来自主题: JobHunting版 - Uni_value subtree problem
也凑个热闹,假设tree nodes的值都是正整数。如果subtree是null认为root(即null
)值是0,非unival sub tree的node是-1.
int count=0;
getUnivalNode(root);
int getUnivalNode(node root)
{
if (root == null)
{
return 0;
}
int left = getUnivalNode(root.left);
int right = getUnivalNode(root.right);
if ((left == 0 || left == root.val)
&& (right == 0 || right == root.val))
{
count++;
return root.val;
}
return -1;
... 阅读全帖
p*****2
发帖数: 21240
3
来自主题: JobHunting版 - Binary Tree Maximum Path Sum
int dfs(TreeNode root)
{
if(root==null)
return 0;

int l=dfs(root.left);
int r=dfs(root.right);
int m=root.val;
if(l>0) m+=l;
if(r>0) m+=r;

max=Math.max(max,m);
return Math.max(l,r)>0?Math.max(l,r)+root.val:root.val;
}
h**********y
发帖数: 1293
4
来自主题: JobHunting版 - Binary Tree Maximum Path Sum
直接用的你的code阿。。哪里要reset?
int dfs(TreeNode root)
{
if(root==null)
return 0;

int l=dfs(root.left);
int r=dfs(root.right);
int m=root.val;
if(l>0) m+=l;
if(r>0) m+=r;

max=Math.max(max,m);
return Math.max(l,r)>0?Math.max(l,r)+root.val:root.val;
}
b*****u
发帖数: 648
5
递归,有点tricky的地方在于递归函数每次返回的是最大的单侧路径,但同时把两侧加
自己的和与记录的最大值比较,最终返回的是那个记录值
class Solution {
public:
int maxPathSum(TreeNode *root) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int maxSoFar= root->val;
int tmp = maxContainRoot(root, maxSoFar);
return maxSoFar;
}
int maxContainRoot(TreeNode *root, int& maxSoFar)
{
if (root == NULL) return 0;
int leftMax = maxContainRoot(root->left,maxSoFar);
... 阅读全帖
l*******b
发帖数: 2586
6
int maxPathSum(Node *h) {
int m = h->val;
stack ss;
stack ms;
Node *ret = NULL;
while(h || !ss.empty()) {
if(h) {
ss.push(h);
h = h->l;
continue;
}
h = ss.top();
if(NULL == h->r || ret == h->r) {
int mr = 0, ml = 0;
if(h->r) { mr = max(ms.top(), 0); ms.pop();}
if(h->l) { ml = max(ms.top(), 0); ms.p... 阅读全帖
l*******b
发帖数: 2586
7
int maxPathSII(Node *h) {
int m = h->val;
int res = helper(h, m);
return m;
}
int helper(Node *h, int &m) {
if(NULL == h) return 0;
int ml = max(helper(h->l, m), 0);
int mr = max(helper(h->r, m), 0);
m = max(m, h->val + mr + ml);
return h->val + max(mr, ml);
}
学习一下递归的写法。。
l*********8
发帖数: 4642
8
来自主题: JobHunting版 - 一道二叉树的题
贴个代码吧:
int scanPostOrder(int *A, int idx, int minVal, int maxVal)
{
if (idx < 0 || A[idx] < minVal || A[idx] > maxVal)
return idx; //如果不能满足数值范围,或者已经扫描完毕,就返回到父节点
int val = A[idx];
idx = scanPostOrder(A, idx-1, val, maxVal); // 右子树
return scanPostOrder(A, idx, minVal, val); // 左子树
}
bool checkPostOrder(int *A, int n)
{
return scanPostOrder(A, n-1, INT_MIN, INT_MAX) < 0;
}
p*****2
发帖数: 21240
9
def cal(str:String):Int={
val numbers=str.split("[+-/*]").map(_.toInt)
val operators=str.filterNot(_.isDigit)
var result=numbers(0)

for(i<-0 until operators.length) operators(i) match{
case '+' => result+=numbers(i+1)
case '-' => result-=numbers(i+1)
case '*' => result*=numbers(i+1)
case '/' => result/=numbers(i+1)
}
result
}

def solve(str:String):Int={
val plusminus= -... 阅读全帖
p*****2
发帖数: 21240
10
def cal(str:String):Int={
val numbers=str.split("[+-/*]").map(_.toInt)
val operators=str.filterNot(_.isDigit)
var result=numbers(0)

for(i<-0 until operators.length) operators(i) match{
case '+' => result+=numbers(i+1)
case '-' => result-=numbers(i+1)
case '*' => result*=numbers(i+1)
case '/' => result/=numbers(i+1)
}
result
}

def solve(str:String):Int={
val plusminus= -... 阅读全帖
p*****2
发帖数: 21240
11
来自主题: JobHunting版 - G 家面经
第一题练了练。没有测试。
class QTreeNode (var color:Int){
val children=new Array[QTreeNode](4)
}
def clone(root:QTreeNode):QTreeNode={
if(root==null) return null
val newNode=new QTreeNode(root.color)
for(i<-0 until 4) newNode.children(i)=clone(root.children(i))
newNode
}

def intersection(left:QTreeNode, right:QTreeNode):QTreeNode={
if(left.color==2 && right.color==2){
val newNode=new QTreeNode(2)
for(i<-0 until 4) newNode.ch... 阅读全帖
p*****2
发帖数: 21240
12
来自主题: JobHunting版 - G 家面经

随便搞了一个。不是balanced
class Node(arr:Array[Int], start:Int, end:Int){
val minid=arr.indexOf(arr.slice(start,end+1).min,start)
val left=if(start val right=if(end>minid) new Node(arr,minid+1,end) else null

def query(s:Int, e:Int):Int={
if(e if(s>minid) return right.query(s,e)
arr(minid)
}
}
p*****2
发帖数: 21240
13
来自主题: JobHunting版 - G 家面经
第一题练了练。没有测试。
class QTreeNode (var color:Int){
val children=new Array[QTreeNode](4)
}
def clone(root:QTreeNode):QTreeNode={
if(root==null) return null
val newNode=new QTreeNode(root.color)
for(i<-0 until 4) newNode.children(i)=clone(root.children(i))
newNode
}

def intersection(left:QTreeNode, right:QTreeNode):QTreeNode={
if(left.color==2 && right.color==2){
val newNode=new QTreeNode(2)
for(i<-0 until 4) newNode.ch... 阅读全帖
p*****2
发帖数: 21240
14
来自主题: JobHunting版 - G 家面经

随便搞了一个。不是balanced
class Node(arr:Array[Int], start:Int, end:Int){
val minid=arr.indexOf(arr.slice(start,end+1).min,start)
val left=if(start val right=if(end>minid) new Node(arr,minid+1,end) else null

def query(s:Int, e:Int):Int={
if(e if(s>minid) return right.query(s,e)
arr(minid)
}
}
p*****2
发帖数: 21240
15
来自主题: JobHunting版 - 亚麻onsite总结,攒人品,求好运

我写了一个练练。
def next(a:Array[Int], t:Int):Int={
val arr=a.map(i=>(i+'0').toChar)
val target=t.toString
util.Sorting.quickSort(arr)
for(i<-target.length-1 to 0 by -1){
val next=arr.find(v=>v>target(i))
if(next.nonEmpty) return (target.slice(0,i)++next.get.toString++
arr(0).toString*(target.length-1-i)).toInt
}
(arr(0).toString*(target.length+1)).toInt
}
c********t
发帖数: 5706
16
来自主题: JobHunting版 - storm8 online code给跪了
嗯,就是你这个算法,O(n*sqrt(n)),改了改ben5736的codes 不知过不过的了大case;
public static int cyclic(String s) {
int len = s.length();
if (len <= 1)
return 1;
ArrayList factors = get_factors(len);
for (int i = factors.size() - 1; i >= 0; i--) {
int fctr = factors.get(i);
if (valid_cyclic(s, fctr))
return fctr;
}
return len;
}
static boolean valid_cyclic(String s, int v) {
for (int i = 0, j = v; i < s.length(); i++, j++) {
if (j == s.... 阅读全帖
c********t
发帖数: 5706
17
来自主题: JobHunting版 - storm8 online code给跪了
嗯,就是你这个算法,O(n*sqrt(n)),改了改ben5736的codes 不知过不过的了大case;
public static int cyclic(String s) {
int len = s.length();
if (len <= 1)
return 1;
ArrayList factors = get_factors(len);
for (int i = factors.size() - 1; i >= 0; i--) {
int fctr = factors.get(i);
if (valid_cyclic(s, fctr))
return fctr;
}
return len;
}
static boolean valid_cyclic(String s, int v) {
for (int i = 0, j = v; i < s.length(); i++, j++) {
if (j == s.... 阅读全帖
l***i
发帖数: 1309
18
这个问题很贱,有一种做法是swap两个node的实际内容,然后删除后一个。当然如果要
删除的是tail就没办法这么搞了。
typedef int ItemType;
struct node {
ItemType val;
node *next;
};
node* delete(node *ptr)
{
if (ptr == NULL) return;
if (ptr->next == NULL) return; // do something like report error
node *next = ptr->next;
swap(ptr->val, next->val);
ptr->next = next->next;
next->next = NULL;
return next;
}
x******a
发帖数: 6336
19
Thanks a lot! it worked.
再请教一个问题:我想历遍一个通过frontinsert生成的linkedlist,为什么看不到第
一个insert的元素?谢谢
#include
#include "singlylinkedlist.h"
int main(int argc, const char * argv[])
{
SingleLinkedList aList;
int i=0;
while(i<10){
aList.firstInsert(i);
++i;
}
aList.traverse();
}
输出是
9 8 7 6 5 4 3 2 1
没有0
template< typename T> class ListElement;
template< typename T> class SingleLinkedList;
template
class ListElement{
public:
ListElement(cons... 阅读全帖
p*****2
发帖数: 21240
20
来自主题: JobHunting版 - 问两道面试中碰到的题目
def solve(s:String):Int={
val n=s.length
val pos=Array.ofDim[Boolean](n,n)
val dp=Array.tabulate(n+1)(i=>n-i)

for(i<-n-1 to 0 by -1; j<-i until n if(s(i)==s(j) && (j-i<2 || pos(i
+1)(j-1)))){
pos(i)(j)=true
dp(i)=math.min(dp(i), 1+dp(j+1))
}

return dp(0)-1
}
p*****2
发帖数: 21240
21
来自主题: JobHunting版 - 有人做hackranker的题么
刚做了一题,感觉不错。准备好好做做了。哈哈。我这个代码过了第一题
object Solution {
def main(args: Array[String]) {
val n=readLine.toInt
val arr=readLine.split(" ").map(_.toInt)
val last=arr.last
var i=arr.length-2
while(i>=0 && arr(i)>last) {arr(i+1)=arr(i); println(arr.mkString("
"));i-=1}
arr(i+1)=last
println(arr.mkString(" "))

}
}
a******3
发帖数: 113
22
来自主题: JobHunting版 - Scala怎么通过index访问set或者array
定义了一个
val map = new ConcurrentSkipListMap[Key, Value]()
因为要实现多线程,需要重写他的iterator
我的代码如下
def keyIterator: Iterator[Key] = new Iterator[Key] {
val newMap=getMapClone
var set=newMap.keySet()
var pos = 0
def hasNext = pos < newMap.size()
def next: Key = { val z = array(pos) ; pos += 1 ; z }
}
[error] found : Int
[error] required: Key
array(pos)这方法貌似是通过key去访问,但是我想通过index去访问这个set,该怎么
写呢?或者有什么办法可以iterate这个map的key集合吗
本人新手,无奈网上找不到,求各位不吝赐教
a******3
发帖数: 113
23
来自主题: JobHunting版 - Scala怎么通过index访问set或者array

def keyIterator: Iterator[Key] = new Iterator[Key] {
val newMap=getMapClone
var array=newMap.keySet().toArray
var pos = 0
def hasNext = pos < newMap.size()
def next: Key = { val z = array(pos) ; pos += 1 ; z }
}
[error] found : z.type (with underlying type Object)
[error] required: Key
[error] def next: Key = { val z = array(pos) ; pos += 1 ; z }
[error] one error found
然后变成获取的内容有问题了。。
d*******3
发帖数: 58
24
来自主题: JobHunting版 - 问一道题目。。
@recursive 和@fatalme的蠕虫算法好,我试着写了下
struct Tuple
{
int val;
char from;//A,B,or C
};
int MinAbsDiff(vectr& A,vector& B,vector& C)
{
sort(A.begin(),A.end());
sort(B.begin(),B.end());
sort(C.begin(),C.end());
vector D = Merge(A,B,C);
int findCount[3]={0};
int count = 0;
int ans = 2147483647;
for(int start =0,end =0;end < D.length();end++)
{
if(findCount[D[end].from-'A'] == 0)count++:
findCount[D[end].from-'A']++;
... 阅读全帖
q*******z
发帖数: 62
25
来自主题: JobHunting版 - Top K in N sorted array
根据三楼的做法,用C++写了一个,根据STL的文档应该是O(N+K)的时间复杂度,空间复
杂度不太清楚:
vector topK(vector> arrs, int N, int K)
{
priority_queue a;
unordered_multimap idxs;
for(int i = 0; i < N; i++)
{
if(!arrs[i].empty())
{
idxs.insert(make_pair(arrs[i].back(),i));
a.push(arrs[i].back());
arrs[i].pop_back();
}
}
vector r;
for(int i = 0; i <... 阅读全帖
f****s
发帖数: 74
26
leetcode上给出的思想很好。就是keep一个pre和一个cur,
如果cur是pre的孩子,说明我们正从上到下,如果反过来,说明我们从下往上,就该打
印节点了。
顺便练一个,
void postorder(Node* r)
{
if(!r) return;
stack s;
Node* pre=0;
Node* cur=r;
s.push(r);
while(!s.empty()){
cur=s.top();
if(pre==0||cur==pre->left||cur==pre->right){
if(cur->left) s.push(cur->left);
else if(cur->right) s.push(cur->right);
else{
cout<val;
s.pop();
}
}else{
if(pre=cu... 阅读全帖
f********d
发帖数: 51
27
来自主题: JobHunting版 - 发觉自己的Java编程风格在变
and the reason why scala throws error is because of the way it treats def
and val
you can do:
class A {def a="a"}
class B extends A { override val a="b"}
if you go with javap, you will get:
public class B extends A{
public java.lang.String a();
public B()
}
at byte code level, val is indeed converted to a method. in other word,
scala doesn't treat the field as real field but methods.
methods obviously need to follow method resolution which is override.
technically, scala is really following jvm ... 阅读全帖
r*********n
发帖数: 4553
28
来自主题: JobHunting版 - 问一个atoi overflow的问题
要考虑overflow,为什么不从低位加到高位呢?
假如当前位的值是cur,判断一下之前位总和val是不是满足
val <= numeric_limits::max() - cur
如果满足,则val += cur and recurse,否则throw overflow_error。这里有一个问题
是连续很多零,直接导致遇到非零位计算cur的时候,cur直接overflow,但这个问题很
好解决,只要track连续零的个数即可。
c*u
发帖数: 22
29
来自主题: JobHunting版 - 问一道题
这样可以么? list 保存每一轮数值并用变量记下该轮最大值:
从上往下
string filename = "data.txt";
if (File.Exists(filename))
{
string line;
List list = new List();
StreamReader sr = File.OpenText(filename);
int max = 0;
while ((line = sr.ReadLine()) != null)
{
int[] array = line.Trim().Split(' ').Select(n => int.Parse(n)).ToArray<
int>();
int size = array.Count();
if (size ==1)
{
list.Add( array[0]);
max = list[0];
}
else if (size>1)
{
int next=0, val = 0;
... 阅读全帖
x****8
发帖数: 127
30
来自主题: JobHunting版 - G 家电面题目, 欢迎讨论!
private static void printCombinations(String string) {
List positions = new ArrayList();
List values = new ArrayList();
for(int i = 0; i < string.length(); ++i){
if(string.charAt(i) == '?'){
positions.add(i);
values.add(-1);
}
}
int pos = 0;
while(pos >= 0){
int val = values.get(pos) + 1;
if(val == 2){
values.set(p... 阅读全帖
s*********d
发帖数: 2406
31
来自主题: JobHunting版 - 也发面经
完成第一部分,regex好像很难,我google了一堆好像没有perfect方案
现在这个也很占内存
public HashSet readfromfile(String filename) {
HashSet plist=new HashSet() ;

try {
File file = new File(filename);
if (file.exists()) {
BufferedReader input = new BufferedReader(new FileReader(
file));
String line = null;
while ((line = input.readLine()) != null) {
StringBuffer paralist=new StringBuffer... 阅读全帖
j********r
发帖数: 25
32
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode *partition(ListNode *head, int x) {
ListNode dummy(0);
ListNode dummy2(0);
ListNode *p = &dummy;
ListNode *pp = &dummy2;
while(head) {
if (head->val < x) {
p->next = head;
p = p->next;
}
else {
... 阅读全帖
p****U
发帖数: 109
33
来自主题: JobHunting版 - 发个pure storage的interviewstreet题目
如果他要用双指针做参数, 还是用double pointer吧, 用 dummy head的话,感觉会
让interviewer 觉得理解指针不够透彻。
void removeNode(int val, ListNode **list) {
while(*list!=NULL){
if((*list)->val==val){
ListNode *next=(*list)->next;
delete *list;
*list=next;
}
else {
list=&(*list)->next;
}
}
}
p****U
发帖数: 109
34
来自主题: JobHunting版 - 发个pure storage的interviewstreet题目
如果他要用双指针做参数, 还是用double pointer吧, 用 dummy head的话,感觉会
让interviewer 觉得理解指针不够透彻。
void removeNode(int val, ListNode **list) {
while(*list!=NULL){
if((*list)->val==val){
ListNode *next=(*list)->next;
delete *list;
*list=next;
}
else {
list=&(*list)->next;
}
}
}
a**d
发帖数: 85
35
来自主题: JobHunting版 - stream palindrome
You are getting a stream of characters and at any time you can be asked to
find out if the string received yet is palindrome or not.
There can be multiple queries. O(n) and No extra space.
在careercup上看到的。
int val=0,每次有一个新的char进来,就val ^ new char.
query时候就看val是否为0.
如果query是在读完第一个char之后,那就return true。
大家觉得这样对不?
b********6
发帖数: 97
36
来自主题: JobHunting版 - 求leetcode LRU Java 解法
贴个我刚通过的解法 608ms
public class LRUCache {

static public class Pair {
int key;
int val;
Pair before;
Pair next;
public Pair(int k, int v){
key = k;
val = v;
before = null;
next = null;
}
}

//private LinkedList< Pair > item_list ;
//private ArrayDeque item_list;
private Pair head;
private Pair tail;
private HashMap item_map;
private int cap;
... 阅读全帖
l******a
发帖数: 64
37
来自主题: JobHunting版 - G onsite面经 加求blessing
4.2. 第四轮第二个, Harry Potter那道题试写了一下伪代码
memo[m+1][n+1]
For i in [0, m]
For j in [0, n]
Memo[i][j] = 0
For i in [0, m-1]
For j in [0, n-1]
Memo[i+1][j+1] = Memo[i][j+1] + grid[i][j]
Memo[i+1][j+1] = max(Memo[i+1][j+1] ,Memo[i][j+1] + grid[i][j])
val = Memo[m][n]-grid[m-1][n-1]
If val < 0
return -val
Else
Return 0
l******s
发帖数: 3045
38
来自主题: JobHunting版 - 小弟求问LinkedIn那道Deep Iterator的题
A validated C# Enumerator solution.

public class EmbeddedList : IEnumerable{
private bool isValue;
private T val;
private IList> ElementList = new List>();
public EmbeddedList() { isValue = false; }
public EmbeddedList(T t) { val = t; isValue = true; }
public void Add(T t){
EmbeddedList newElement = new EmbeddedList(t);
ElementList.Add(newElement);
}
public void Add(EmbeddedList E) { ElementList.Ad... 阅读全帖
l******s
发帖数: 3045
39
来自主题: JobHunting版 - 小弟求问LinkedIn那道Deep Iterator的题
A validated C# Enumerator solution.

public class EmbeddedList : IEnumerable{
private bool isValue;
private T val;
private IList> ElementList = new List>();
public EmbeddedList() { isValue = false; }
public EmbeddedList(T t) { val = t; isValue = true; }
public void Add(T t){
EmbeddedList newElement = new EmbeddedList(t);
ElementList.Add(newElement);
}
public void Add(EmbeddedList E) { ElementList.Ad... 阅读全帖
q****m
发帖数: 177
40
相对顺序一样也可以的话用递归也可以吧
void common(node *r1,node*r2)
{
if(!r1 || !r2) return;
if(r1→val == r2→val) cout < common(r1→left,r2→left);
common(r1→right,r2→right);
}
c****d
发帖数: 116
41
来自主题: JobHunting版 - 狗狗家fail的面经
我觉得可以这样做
假定string里面只有0-9, a-z, A-Z这些字符ch.
对字符串i, 建立一个a[ch][i]数组, 比如有
a[0][i] = 1; // if char '0' in string i
a[0][i] = 0; // otherwise
...
a[61][i] = 1; // if char 'Z' in string i
a[61][i] = 0; // otherise
然后都a[62][n]进行处理
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j < n; j++)
{
for (k = 0; k < 62; k++ )
{
val = val && (a[k][i] ^ a[k][j])
}
if (val)
{
if (max < i * j)
{
max = i * j
and remember i, j
}
}
}
}
l*********8
发帖数: 4642
42
又写了一遍,供参考
int getValue(const char * &expr) {
int val;
sscanf(expr, "%d", &val);
while (isdigit(*++expr))
;

return val;
}
int evaluate(const char *expr) {
if (!expr || !*expr) return 0;

int ans = getValue(expr);
while (*expr == '*' || *expr == '/') {
if (*expr == '*')
ans *= getValue(++expr);
else
ans /= getValue(++expr);
}

return ans + evaluate(expr);
}
R******9
发帖数: 267
43
来自主题: JobHunting版 - M面经
first print the left boundary, then all the leaves, and the right boundary.
1
2 3
4 5 6
7 8 9
should be 1 2 4 7 8 9 6 3.
void traverse(Node* root, bool left_most, bool right_most)
{
if (!root) return; // bottom condition
if (left_most) cout << root->val << ' '; //先序打印左边界

traverse(root->left, left_most, false);
if (!root->left && !root->right && !left_most && !right_most) cout <<
root->val << ' '; //中叙打印叶子
tr... 阅读全帖
T******g
发帖数: 790
44
实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据
结构。 (即只使用基本的数据结构)
public boolean isUniqueChars2(String str) {
int checker = 0;
for (int i = 0; i < str.length(); i++) {
int val = str.charAt(i) - 'a';
if ((checker & (1 << val)) > 0) {
return false;
} else {
checker |= (1 << val);
}
}
return true;
}
看不懂啊
M*****M
发帖数: 20
45
来自主题: JobHunting版 - 一道面试题
类似找最大BST subtree, bottom up.
bool findsubtree(TreeNode *node, unordered_set &set, vector
&vec) {
if(not node) {
return true;
}
unordered_set leftset;
unordered_set rightset;
bool left = findsubtree(node->left, leftset, vec);
bool right = findsubtree(node->right, rightset, vec);
if(left&&right) {
//leftset and rightset overlap
for(auto ele:leftset) {
if(rightset.find(ele)!=rightset.end()) {
... 阅读全帖
f**********t
发帖数: 1001
46
来自主题: 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... 阅读全帖
f**********t
发帖数: 1001
47
Well, my code is complex and sigfault. Let me go back if I have time.
This is too hard for a 45 minutes interview.
void skipSpace(const char **s) {
while (isspace(**s)) {
++(*s);
}
}
int getNum(const char **s) {
bool neg = false;
if (**s == '-') {
neg = true;
++(*s);
}
int cur = 0;
while (isdigit(**s)) {
cur = cur * 10 + (**s - '0');
++(*s);
}
--(*s);
return neg ? -cur : cur;
}
int opNum(int x, int y, char op) {
switch (op) {
case '+':
return x + y... 阅读全帖
p*****2
发帖数: 21240
48
来自主题: JobHunting版 - G家一道算法题
val st: Stream[Int] = {
val pq = new PriorityQueue[Int]()
pq.add(1)
def loop(curr:Int): Stream[Int] = {
while(pq.peek()<=curr) pq.poll()
val c = pq.poll()
pq.add(c*2)
pq.add(c*3)
pq.add(c*5)
c #:: loop(c)
}
loop(0)
}
C*******n
发帖数: 193
49
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:

vector inorderTraversal(TreeNode *root) {
vector ret;
if(root) {

stack stack;
stack.push(root);

TreeNode* top = stack.top();
while(!stack.empty() || top!=NULL){

... 阅读全帖
w*****t
发帖数: 485
50
来自主题: JobHunting版 - F Onsite面经
share 一个:
int maxLeafPath(TreeNode *root, int &maxPath)
{
if (!root) return INT_MIN;
if (!root->left && !root->right) return root->val;
int leftPath = maxLeafPath(root->left, maxPath);
int rightPath = maxLeafPath(root->right, maxPath);
if (root->left && root->right)
maxPath = max(maxPath, root->val + leftPath + rightPath);
return root->val + max(leftPath, rightPath);
}
int maxLeafPath(TreeNode *root)
{
... 阅读全帖
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)