M******7 发帖数: 30 | 1 public Node getMedian(Node head){
if(head==null)return head;
Node p1=head;
Node p2=head;
while(p2.next!=null&&p2.next.next!=null){
p1=p1.next;
p2=p2.next.next;
}
return p1;
}
public Node Merge(Node n1, Node n2){
Node cur=new Node(-1);
Node head=cur;
while(n1!=null&&n2!=null){
if(n1.value<=n2.value){
cur.next=n1;
n1=n1.next;
}else{
... 阅读全帖 |
|
|
y*****3 发帖数: 451 | 3 Recover Binary Search Tree那道题,自己没想出来,在网上看的别人的思路,自己再
写一下,基本上和人家写的一模一样的,在Eclipse上测试都没有问题,但是OJ就通
过不了:
Wrong Answer:
Input: {2,#,1}
Output: {2,#,0}
Expected: {1,#,2}
可是这个test case我在Eclipse上测试都没有问题啊!!!请大牛们给看看到底是哪儿
写错了?leetcode不该这么不靠谱吧???
public class Solution {
TreeNode badNode1 = null;
TreeNode badNode2 = null;
TreeNode prev = null;
public void recoverTree(TreeNode root) {
if (root != null && (root.left != null || root.right != null) )
{
inOrderTr... 阅读全帖 |
|
c********w 发帖数: 2438 | 4 我po个我的
public class Solution {
public ListNode sortList(ListNode head) {
if(head==null||head.next==null)
return head;
ListNode slow=head;
ListNode fast=head.next;
while(fast!=null){
fast=fast.next;
if(fast!=null){
fast=fast.next;
slow=slow.next;
}
}
ListNode h1=head;
ListNode h2=slow.next;
slow.next=null;
h1=sortLi... 阅读全帖 |
|
i*******n 发帖数: 114 | 5 第二题和我年初电面google的题目一样(也是印度人面的)
这个需要pass by reference。如果用C++做,就比较好做。如果用java,需要自定义一
个类,然后里面有一个成员变量带有node。下面的是我使用全局变量做的。
/**
Convert a binary tree
into a circular double linked list such that the linked list
elements are in the order of the in-order traversal result of the binary
tree.
**/
class Node{
int val;
Node left;
Node right;
}
public class BinaryTreeIntoDoubleLL{
/**
*
* return the head node of the converted double linked list
*
* @param rootNode
*... 阅读全帖 |
|
a***e 发帖数: 413 | 6 多谢各位,但现在试着在纸上跑程序,但有些就是搞不清哪里错了,比如这个
Copy List with Random Pointer
A linked list is given such that each node contains an additional random
pointer which could point to
any node in the list or null.
Return a deep copy of the list.
我看了idea,自己写了如下程序,但就是
Submission Result: Runtime Error
Last executed input:
{-1,#}
看了半天,试着一步一步走进去,还是不知道哪里错了,打算在VS里面debug一下看。
觉得和能通过的答案没有多少区别啊。。。。。。。。
My wrong answer.
/**
* Definition for sin... 阅读全帖 |
|
a***e 发帖数: 413 | 7 多谢各位,但现在试着在纸上跑程序,但有些就是搞不清哪里错了,比如这个
Copy List with Random Pointer
A linked list is given such that each node contains an additional random
pointer which could point to
any node in the list or null.
Return a deep copy of the list.
我看了idea,自己写了如下程序,但就是
Submission Result: Runtime Error
Last executed input:
{-1,#}
看了半天,试着一步一步走进去,还是不知道哪里错了,打算在VS里面debug一下看。
觉得和能通过的答案没有多少区别啊。。。。。。。。
My wrong answer.
/**
* Definition for sin... 阅读全帖 |
|
g****9 发帖数: 163 | 8 写了一个graph的class 但是下面第一种写法是错误的,我不是太明白,是因为
GNode node1 = null;GNode node2 = null吗?这时候node1跟node2并没有allocate
memory,所以就算后面if statement里面的node1 = new GNode(key1) 也只是在if这个
block里面有效的吧,在最后node1.connect(node2)里node1 是不是还是null呢 求指
点。第二个graph class 就可以work的。
public Graph(int[][] adjacencyMatrix) {
nodes = new HashMap();
GNode node1 = null;
GNode node2 = null;
for (int i = 0; i < adjacencyMatrix.length; i++) {
int key1 = i + 1;
... 阅读全帖 |
|
z*****u 发帖数: 51 | 9 只要在同一个layer就可以了,parent不一定是兄弟。你一个一个layer的遍历,就可以
发现在这一行里的所有nodes了:
boolean findIfCousins(TreeNode root, TreeNode a, TreeNode b) {
if(root == null || (root.val == a.val|| root.val == b.val) || a.val
== b.val)
return false;
ArrayList preLayer = null, curLayer = new ArrayList<
TreeNode>();
curLayer.add(root);
int count = 0;
while(!curLayer.isEmpty()){
preLayer = curLayer;
curLayer = new ArrayList阅读全帖 |
|
S*******C 发帖数: 822 | 10 import java.util.Stack;
/*
* Given Tree and Node n and int k, print all node which are at physical
distance <=k from n
* @Amazon intern
*/
public class Solution {
public static void main(String args[]){
Solution solution = new Solution();
TreeNode a = new TreeNode(8);
TreeNode b = new TreeNode(6);
TreeNode c = new TreeNode(10);
TreeNode d = new TreeNode(9);
TreeNode e = new TreeNode(12);
TreeNode f = new TreeNode(4);
TreeNode ... 阅读全帖 |
|
T******7 发帖数: 1419 | 11 写了一个很丑的code.
求拍。
public class uniValueTree {
public int countUniTree(TreeNode root){
if(root.left == null && root.right == null) return 1;
return helper(root);
}
private int helper(TreeNode node){
if(node.left == null && node.right == null){
return 1;
}
if(node.left == null){
if(isUni(node.right)){
if(node.val == node.right.val){
return 1 + helper(node.right);
... 阅读全帖 |
|
发帖数: 1 | 12 Node* FindGrandParent(Node *root, Node *target)
{
if (root == NULL || target == NULL)
return NULL;
if (target == root)
return root;
else if (root->left == NULL && root->right == NULL)
return NULL;
Node *left = FindGrandParent(root->left, target);
if (left == target && root->left != target)
return root;
else if (left != NULL)
return left;
Node *right = FindGrandParent(root->right, target);
if (right == target && root-... 阅读全帖 |
|
w**w 发帖数: 5391 | 13 ☆─────────────────────────────────────☆
Dimajo (redwine) 于 (Mon Sep 3 17:42:58 2012, 美东) 提到:
哈哈...
http://www.youtube.com/watch?v=WBVavEynzgE
☆─────────────────────────────────────☆
walkerby (双子座沙迦) 于 (Mon Sep 3 17:47:07 2012, 美东) 提到:
更多的录像呢?
☆─────────────────────────────────────☆
furthermore (找啊找啊找) 于 (Mon Sep 3 18:55:29 2012, 美东) 提到:
顶。美女摔锅如云。没去的都亏了。
期待更多录像。
☆─────────────────────────────────────☆
fedehen (费得很) 于 (Mon Sep 3 18:57:38 2012, 美东) 提到:
没去,亏死,现在又看不到,急死
☆─────... 阅读全帖 |
|
n********a 发帖数: 68 | 14 select emp_id,
max(decode(month, 'Jan', sumofworkhours, null)),
max(decode(month, 'Feb', sumofworkhours, null)),
max(decode(month, 'Mar', sumofworkhours, null)),
max(decode(month, 'Apr', sumofworkhours, null)),
max(decode(month, 'May', sumofworkhours, null)),
max(decode(month, 'Jun', sumofworkhours, null)),
max(decode(month, 'Jul', sumofworkhours, null)),
max(decode(month, 'Aug', sumofworkhours, null)),
max(decode(month, 'Sep', sumofworkhours, null)),
max(decode(month, 'Oct', sumofworkhours, nul |
|
s**********o 发帖数: 14359 | 15 请问这种怎么办啊
1 null null null null null null null null null
你有一个默认的RULE,如果COL1无值,就接着往后走,一直到有值
这不是CURSOR的FOR LOOP吗? |
|
h*********g 发帖数: 4934 | 16 10来年前,我刚到美国留学时,听师哥师姐们说,他们最常上的一个网站叫mitbbs。很
快我也养成了每天上mitbbs的习惯。留学生遇到的所有问题,租房啦,拼车啦,买菜啦
,学业上遇到的各种困惑啦,都有人热心、实时给予解答。大家都是漂洋过海、离家万
里,彼此关照,很是温暖。
这故事就发生在如今号称“北美华人第一门户”的mitbbs上。
null
海外华人第一门户的温暖和混乱
容我先简单介绍一下这个北美留学生无人不知的著名网站。
Mitbbs最早叫“未名空间”,其历史可追溯到1996-1997年北大的未名BBS。1997年一群
留学生在麻省理工学院开创bbs.mit.edu,有了“MIT”之名。
2001年,论坛开创人look即将毕业,且麻省理工嫌论坛流量太大(当时已成为“海外华
人第一门户”),所以网友捐款,重新注册了永久域名mitbbs.com,网友用其谐音称之
为“买买提”。
null
这才是“买买提”
网站言论自由,话题广泛,留学生们每天在学校见面,也会经常讨论该网上的热点话题
。网站还开发了虚拟货币,网友亲切地称为“伪币”,每10个伪币称为1个“包子”。
每个版面每天可发10个“... 阅读全帖 |
|
n****t 发帖数: 241 | 17 我看到貌似正确的一个解法,加了很多限制条件。。。
面试题之二叉搜索树的中位数 收藏
这个问题不算是很常见的问题,基本上在中文的论坛社区没有看到过,遇见这个是因为
偶尔在http://www.ocf.berkeley.edu/~wwu/cgi-bin/yabb/YaBB.cgi 上面注册了账号而看到的,题目如下:
Given a BST (Binary search Tree) how will you find median in that?
Constraints:
* No extra memory.
* Function should be reentrant (No static, global variables allowed.)
* Median for even no of nodes will be the average of 2 middle elements and
for odd no of terms will be middle element only.
* Algorithm should be efficient in terms of comple... 阅读全帖 |
|
m*****k 发帖数: 731 | 18 //Node class
class MyObj
{
int m_value;
MyObj m_next = null;
static MyObj head = null;
static MyObj tail = null;
MyObj(int x)
{
m_value = x;
}
public String toString()
{
return m_value + "";
}
//recurrsive func
static MyObj reverse(MyObj head)
{
MyObj next = head.m_next;
head.m_next = null;
if (next != null)
{
MyObj llast = reverse(next);
llast.m_next = head;
}
... 阅读全帖 |
|
f*********i 发帖数: 197 | 19 A的onsite,我尽量客观写,大家帮我分析一下
第一个 美国人, 两个string,问第一个是否包含第二个的全部character,扩展是求第一
个string最短的substring包含第二个中所有的character.
我的解法是hashtable, 然后扩展问题是O(n)那个,先找到第一个包含全部的,然后从头
开始删除,接着从尾巴增加那个.面试官表示满意.
OOD是设计card game
交流过程很融洽.
第二个 hiring manage,印度人, 这个人带我去吃饭,然后问了我电梯设计问题,纠缠在
什么时候读楼层,还有如何判断要不要停下来接人.说了快50分钟.我个人感觉还好,反正
他也是都是笑到最后
第三个,白人,一开始问我LRU cache的设计,我直接告诉他double linked list + hash
table,他很吃惊问我是不是准备过,我说是,然后换了一题Bianry tree找两个节点的最
小公共父亲, 一开始是允许有父节点的,然后扩展到没有父亲节点,我给了O(nlogn)解法
public static BinaryTree tree_least_comm... 阅读全帖 |
|
d*******r 发帖数: 208 | 20 for 3.
1) what if tree1 or tree2 is null?
2) Why do you need call tree_least_common_ascenteor 4 times? isn't two times
enough? is if(left!=null&right!=null) ever going to happen?
some simplification of your code:
if(root==null || tree1 == null || tree2 == null)
return null;
if(root.equals(tree1)||root.equals(tree2))
return root;
BinaryTree left = tree_least_common_ascenteor(root.leftChild,tree1,tree2);
if (left != null) {
return left;
} else {
return tree_least_co... 阅读全帖 |
|
w*****3 发帖数: 101 | 21 我开始理解错了,
这个思路基本上是darksteel 说的一样,
java返回多个参数还真不方便,
HashMap map = new HashMap();
btn ln = null, rn = null;
int max = 0;
/*
* find the maximum pair
*/
public void solve(btn root) {
if (root == null)
return;
maxValue(root);
go(root, 0);
print(ln.value);
print(rn.value);
}
/*
* for each node, find the maximum pair
*/
private void go(btn root, int sumhere) {
if ... 阅读全帖 |
|
e******s 发帖数: 38 | 22 题目是find lowest common ancestor in a binary tree (不是BST)。请问
(1)是不是一个node不能是本身的ancestor? 比如如果p是q的parent, 则lowest common
ancestor是p的parent (而不是p)?
(2)以下的code是career cup 上找到的,是不是没有考虑初始的时候 root == p ||
root ==q的情况?
请大牛讲讲,能给个标准的code就更感谢了!
Node *LowestCommonAncestor(Node *root, Node* p, Node * q) {
if(root == NULL)
return NULL;
if (p == NULL || q == NULL)
return NULL;
if(root->leftChild == p || root->leftChild == q || root->rightChild == p||
root->rightChild == q)
return root;
Node... 阅读全帖 |
|
b******g 发帖数: 1721 | 23 这种只是体力劳动的,我最擅长了。 recursive 我就不写了,给一个iterative吧。
public class myLinkedList{
myLinkedList next;
int value;
myLinkedList stwichIterative(){
if(mls==null)
return mls;
if(mls.size()%2==1)
return last();
//begin switch
myLinkedList first=this;
myLinkedList third=null;
if(this.next!=null && this.next.next!=null)
third=this.next.next;
el... 阅读全帖 |
|
k***t 发帖数: 276 | 24 写了一个,没测试。谁给Review一下。谢了。
===========================================
#include
#include
#define N 100
struct Node {
int val;
int nC; // Num of Children
Node *c[N]; // Children
};
bool hasP=false, hasQ=false;
Node * doLCA (Node *r, Node *p, Node *q) {
Node *first=NULL, *second=NULL;
assert(p&&q);
if (!r) return NULL;
if (p==r) {hasP=true; return r;}
if (q==r) {hasQ=true; return r;}
for (int i=0;inC;i++) {
Node *t=doL... 阅读全帖 |
|
h****n 发帖数: 1093 | 25 不会啊,你看我下面的分析:
TreeNode FindLowCommonNode(TreeNode root, TreeNode p, TreeNode q)
{
if(root==null || p == null || q == null)
return null;
if(root==p || root==q)
{
return root;
}
TreeNoe left = FindLowCommonNode(root.Left, p, q);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里left返回4
TreeNoe right = FindLowCommonNode(root.Right, p, q);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
这里right返回3
if(left!=null && right!=null)
{
... 阅读全帖 |
|
j*******e 发帖数: 1058 | 26 我的解法,是一个普遍的k解法。在main里面把k改为2或者是面试官喜欢的k的值就ok。
希望大家指正。
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
// Start typing your Java solution below
// DO NO... 阅读全帖 |
|
j*******e 发帖数: 1058 | 27 我的解法,是一个普遍的k解法。在main里面把k改为2或者是面试官喜欢的k的值就ok。
希望大家指正。
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
next = null;
}
}
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
// Start typing your Java solution below
// DO NO... 阅读全帖 |
|
m********g 发帖数: 272 | 28 public static Node successorInBST(Node root, int key)
{
Node pos = findInBST(root, key);
if(pos == null)
{
throw new IllegalArgumentException("Cannot find the key in the
BST");
}
if(pos.getRight() != null)
{
return findSmallest(pos.getRight());
}
Node successor = null;
while(root != null)
{
if(key < root.getKey())
{
su... 阅读全帖 |
|
z****h 发帖数: 164 | 29 public ListNode deleteDuplicates(ListNode head) {
// Start typing your Java solution below
// DO NOT write main() function
if(head == null || head.next == null) return head;
ListNode curr = head;
ListNode pre = null;
boolean isdup = false;
while(curr.next != null)
{
if(curr.val == curr.next.val){
isdup = true;
curr.next = curr.next.next;
}else
{
... 阅读全帖 |
|
p*****2 发帖数: 21240 | 30 写了一下BT 到 linkedlist不好写呀。
Node Convert(Node node)
{
Node head;
if (node.left == null)
head = node;
else
{
Pair1 pair = Change(node.left, null, node, true);
node.left = pair.max;
head = pair.min;
}
if (node.right != null)
{
Pair1 pair = Change(node.right, node, null, false);
node.right = pair.min;
}
return head;
}
Pair1 Change(Node node, No... 阅读全帖 |
|
j********e 发帖数: 1192 | 31 写了个使用O(1)memory, O(logN * logN) (N是tree的size)的程序。
类似于binary search的算法,测试代码也在下面,应该没有大bug。
先获得树的高度h,然后比较h和root->right子树的高度+1,如果相同,
说明树最后一个节点在root->right,否则最后一个节点在root->left的子树。
#include
#include
#include
#include
using namespace std;
class Node {
private:
Node *left;
Node *right;
int value;
public:
Node() {
left = right = NULL;
value = 0;
}
Node(int v) {
left = right = NULL;
value = v;
}
int Height(Node *node) {
int h... 阅读全帖
|
|
K*********n 发帖数: 2852 | 32 Node *del(Node *tree, int n){
Node *nodeFather = tree -> father;
if (tree -> val == n){
if (tree -> left == NULL && tree -> right == NULL){ // a leaf
if (nodeFather -> left == tree){
nodeFather -> left == NULL;
free(tree);
return nodeFather;
}else{
nodeFather -> right == NULL;
free(tree);
return nodeFather;
... 阅读全帖 |
|
p*****2 发帖数: 21240 | 33
都差不多吧。
public ListNode deleteDuplicates(ListNode head)
{
ListNode curr=head;
ListNode tail=head=null;
for(ListNode prev=null;curr!=null;prev=curr,curr=curr.next)
{
if((prev==null || prev.val!=curr.val) && (curr.next==null ||
curr.val!=curr.next.val))
{
if(tail==null)
{
tail=curr;
head=curr;
}
else
{
... 阅读全帖 |
|
c********s 发帖数: 817 | 34 This is my implementation for these two functions, and a driver to run them.
cat string_reverse.c
#include
#include
#include
void swap(char* c1, char* c2);
// -----------------
void string_reverse1(char* string) {
if (string == NULL)
return;
char* head = string;
char* tail = head;
// find the tail
while (*tail) ++tail;
--tail;
// while loop to do the swap
while (head < tail)
swap(head++, tail--);
}
// -----------------
// the caller of this function is res... 阅读全帖 |
|
C***U 发帖数: 2406 | 35 void MorrisTraversal(struct tNode *root)
{
struct tNode *current,*pre;
if(root == NULL)
return;
current = root;
while(current != NULL)
{
if(current->left == NULL)
{
printf(" %d ", current->data);
current = current->right;
}
else
{
/* Find the inorder predecessor of current */
pre = current->left;
while(pre->right != NULL && pre->right != current)
pre = pre->right;
/* Make current as right child of its inorder predeces... 阅读全帖 |
|
h*********o 发帖数: 230 | 36 Rverse Nodes in k-Group:
看了好久,没发现问题在哪儿,求大牛们过目~~
谢了!
public class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
// Start typing your Java solution below
// DO NOT write main() function
if(head==null)
return null;
ListNode begin=head;
ListNode pre=null;
ListNode end=null;
while(begin!=null){
ListNode cur=begin;
for(int i=0;i
cur=cur.next;
... 阅读全帖 |
|
y***u 发帖数: 174 | 37 写了一下next successor: O(1) space, O(lgN) time。
Node getNextSuccessor(Node root, Node node){
if(root==null || node == null){
return null;
}
Node pre = null;
while(root!=null && root!=node){
if(root.val > node.val){
// go left
pre = root;
root = root.left;
}else if(root.val < node.val){
// right
root = root.right;
}else{
//found
if(node.right!=null){
... 阅读全帖 |
|
s********x 发帖数: 914 | 38 1. use Key to do 'binary search' travel to find first closet node. Then use
two helper function inorderSucc and inorderPrev to expand to neighboring
nodes.
1 public static TreeNode inorderSucc(TreeNode e) {
2 if (e != null) {
3 TreeNode p;
4 // Found right children -> return 1st inorder node on right
5 if (e.parent == null || e.right != null) {
6 p = leftMostChild(e.right);
7 } else {
8 // Go up until we’re on left instead of right (case 2b)
9 while ((p = e.parent) != null) {
10 if (p.left == e)... 阅读全帖 |
|
|
f*******t 发帖数: 7549 | 40 Java版本比较方便,可以用ArrayList自带的iterator。C++如果只需要实现类似于Java
iterator的两个接口,倒是不难。
public class DoubleLevelArrayListIterator {
private Iterator> itLvl1;
private Iterator itLvl2;
public DoubleLevelArrayListIterator(ArrayList> a) {
itLvl1 = a.iterator();
itLvl2 = null;
}
public boolean hasNext() {
if (itLvl2 != null && itLvl2.hasNext()) {
return true;
} else {
while ((itLvl2 == ... 阅读全帖 |
|
W********e 发帖数: 45 | 41 我的办法就是进行二分,将k个链表分为两个一组,组内进行merge。形成一个新的链表
集合。继续两个一组merge,这样下去一共会进行logk次merge,最后merge成为一个链
表。这里用的辅助函数是mergeSortedList,合并两个有序链表,这个辅助函数复杂度
应该是O(n)。
我觉得这个算法的总时间复杂度是O(nlogK),大家觉得对吗??
class Solution {
public:
ListNode* mergeSortedList(ListNode*l1,ListNode*l2)
{
ListNode *h1=l1,*h2=l2;
ListNode *newHead=new ListNode(0),*dummy=newHead; //newHead要赋
值,否则没有next。如果是C语言的话可以申请stack的对象
if(l1==NULL&&l2==NULL)
return NULL;
while(h1!=NULL&&h2!=NU... 阅读全帖 |
|
p*****p 发帖数: 379 | 42 public boolean delete(int val) {
if (_remove(val, root) != null) {
return true;
}
else {
return false;
}
}
private Node _remove(int val, Node t) {
if (t == null) {
return null;
}
else if (val < t.val) {
t.left = _remove(val, t.left);
}
else if (val > t.val) {
t.right = _remove(val, t.right);
}
else if (t.left != null && t.right != null){
//two children
t.val = _findMin(t.right).val;
t.righ... 阅读全帖 |
|
n*p 发帖数: 298 | 43 in order traversal
要用一个变量来存前一个Node的值。但发现有时候值没有被更新,结果是错的,是因为
Java的passing by value的原因吗?代码如下:
public boolean isValidBST(TreeNode root) {
// Start typing your Java solution below
// DO NOT write main() function
if (root == null) return true;
//if (root.left == null && root.right == null) return true;
Integer preVal = Integer.MIN_VALUE;
return inOrder (root, preVal);
}
public boolean inOrder(TreeNode root, Integer preVal... 阅读全帖 |
|
c****7 发帖数: 4192 | 44 我写了一个,但是它说超时,我没看到有deadloop啊?而且我放到eclipse里面也没有
问题呀:
怎么回事呢?
Run Status: Time Limit Exceeded
Last executed input
{2,1}, 2
public ListNode partition(ListNode head, int x) {
// Start typing your Java solution below
// DO NOT write main() function
ListNode small=null,large=null;
ListNode sh=null,lh=null;
while(head!=null){
if(head.val
if(sh==null){
sh=head;
small=head;
}e... 阅读全帖 |
|
n****r 发帖数: 120 | 45 public int maxDepth(TreeNode root) {
if (root == null) return 0;
if (root.left == null && root.right == null)
return 1;
return 1 + Math.max(maxDepth(root.left), maxDepth(root.right));
}
public int maxDepth(TreeNode root) {
Stack stack = new Stack();
TreeNode x = root, prev = null;
int maxDepth = 0;
while (x != null || !stack.isEmpty()){
while (x != null){
stack.push(x);
x = x.left;
}
maxDe... 阅读全帖 |
|
j**7 发帖数: 143 | 46 public static boolean isPalindrome( Node head)
{
if(head==null)
return false;
int length=0;
Node current=head;
Node end=null;
while(current!=null)
{
length++;
end=current;
current=current.next;
}
int mid=length/2 ;
Node midNode=head;
for(int i=0;i
{
midNode=midNode.next;
}
reverse(midNode);
current=head;
N... 阅读全帖 |
|
b******7 发帖数: 92 | 47 #define BLOCK_SIZE 1024
#define ALIGN(size,unit) (((size)+(unit-1))/(unit)*(unit))
struct ChunkHead{
ChunkHead * next;
};
#define CHUNK_SIZE ALIGN(sizeof(ChunkHead) + BLOCK_SIZE, sizeof(int))
ChunkHead * firstChunk;
void initChunk(void * addr, size_t size)
{
firstChunk = NULL;
Chunk * pre = NULL;
for(int i = 0; i < size/CHUNK_SIZE; i++)
{
ChunkHead * cur = (ChunkHead *)(addr + i* CHUNK_SIZE);
if( pre != NULL)
... 阅读全帖 |
|
s**********e 发帖数: 326 | 48 昨天面的,面试官首先迟到了将近五分钟,上来面试官简单介绍了他自己,然后就直接
进入主题,也没有让我做自我介绍啥的,上来问我有没有用过java iterator pattern,
我给听成intepreter, 回答没用过,他不相信,又问了一遍,恍然大悟,赶紧说用过
用过,用过很多,然后他还说用java的人不可能没用过
然后问为什么用iterator, 有啥好处
答了之后接着问java里面有几种list, 答arraylist和linkedlist
又问实现这两种不同list的iterator有什么不同,到此为止都是对答如流,问他我答的
是不是他想要的答案,他说exactly
答完以后开始出题,先是写个data structure, 让我guess这是什么data structure,
class N {
private N l; // can be null
private N r; // can be null
private String data;
}
一紧张说成linkedlist, 赶紧改口说是tree,
然后就是描述问题,要求写一个Iterator, 每... 阅读全帖 |
|
l********n 发帖数: 1038 | 49 现有两种方法,一种递归,一种直接存指针反转。哪种好?
Java版
static List Reverse(List L)
{
//firstly check if L is empty or only has one element then return
if(L==null || L.next==null)
return L;
//otherwise, we can use our recursive method
List remainingReverse = Reverse(L.next);
//next we have two step steps, firstly we need update the tail of
remaining reverse as our head L
L.next.next = L;//this (L.next) is the key to get te tail in constant
time!
//Very important, we need set L.next ... 阅读全帖 |
|