avatar
CVS有卖prenatal vitamin吗# PennySaver - 省钱一族
f*a
1
1. 2D matrix, sorted on each row, first element of next row is larger(or
equal) to the last element of previous row, now giving a target number,
returning the position that the target locates within the matrix
2. Given a binary tree where all the right nodes are leaf nodes, flip it
upside down
* and turn it into a tree with left leaf nodes.
*
* for example, turn these:
*
* 1 1
* / /
* 2 3 2 3
* /
* 4 5
* /
* 6 7
*
* into these:
*
* 1 1
* / /
* 2---3 2---3
* /
* 4---5
* /
* 6---7
*
* where 6 is the new root node for the left tree, and 2 for the right tree.
* oriented correctly:
*
* 6 2
* / /
* 7 4 3 1
* /
* 5 2
* /
* 3 1
*/
avatar
f*2
2
在Bestbuy at ebay买东西不合适, 退到了店里。 用ebay bucks付了一部分, 用信用
卡付了一部分。 过了3个week,终于refund了。 ebay账号显示 “Your ebay bucks
certificate was credited $120" , 但看不到这 $120 ebay bucks。 这退回的ebay
bucks 要多久能再用啊?
avatar
d*e
3
转了一圈没发现,知道的请回复一下。
本周Nature Made vitamin and supplement 买一送一,
CVS有这个牌子的吗?谢谢。
avatar
r*k
4
谢谢分享

【在 f*****a 的大作中提到】
: 1. 2D matrix, sorted on each row, first element of next row is larger(or
: equal) to the last element of previous row, now giving a target number,
: returning the position that the target locates within the matrix
: 2. Given a binary tree where all the right nodes are leaf nodes, flip it
: upside down
: * and turn it into a tree with left leaf nodes.
: *
: * for example, turn these:
: *
: * 1 1

avatar
d*r
5
应该已经能用了。试试当时给你的使用码
avatar
l*a
7
这个期待什么结果
1
/
2 3
4

【在 f*****a 的大作中提到】
: 1. 2D matrix, sorted on each row, first element of next row is larger(or
: equal) to the last element of previous row, now giving a target number,
: returning the position that the target locates within the matrix
: 2. Given a binary tree where all the right nodes are leaf nodes, flip it
: upside down
: * and turn it into a tree with left leaf nodes.
: *
: * for example, turn these:
: *
: * 1 1

avatar
m*9
9
LZ好人,谢谢分享,Bless. 答案是要在google doc里写吗?
avatar
t*i
10
第二题保证除了第一层每层都有2个节点么?

【在 f*****a 的大作中提到】
: 1. 2D matrix, sorted on each row, first element of next row is larger(or
: equal) to the last element of previous row, now giving a target number,
: returning the position that the target locates within the matrix
: 2. Given a binary tree where all the right nodes are leaf nodes, flip it
: upside down
: * and turn it into a tree with left leaf nodes.
: *
: * for example, turn these:
: *
: * 1 1

avatar
e*i
11
<=2

【在 t*******i 的大作中提到】
: 第二题保证除了第一层每层都有2个节点么?
avatar
t*e
13
第一题中的equal条件有什么陷阱么?还是说和leetcode上那道search 2D matrix是一
样的?
avatar
f*a
14
统一回复:
1. 电面不用Gdoc,用CollabEdit
2. 第一题其实是LC原题的变种,等于的边界情况稍微处理一下就可以了

【在 f*****a 的大作中提到】
: 1. 2D matrix, sorted on each row, first element of next row is larger(or
: equal) to the last element of previous row, now giving a target number,
: returning the position that the target locates within the matrix
: 2. Given a binary tree where all the right nodes are leaf nodes, flip it
: upside down
: * and turn it into a tree with left leaf nodes.
: *
: * for example, turn these:
: *
: * 1 1

avatar
j*8
15
第一题,按照cc150的解法,从右上角开始向左或向下二分查找的话,针对这个首尾可
能相等的情况不需要额外的 处理把

【在 f*****a 的大作中提到】
: 统一回复:
: 1. 电面不用Gdoc,用CollabEdit
: 2. 第一题其实是LC原题的变种,等于的边界情况稍微处理一下就可以了

avatar
x*u
16
mark
avatar
j*3
17
lz是new grad么
avatar
t*e
18
同问如果target正好是重复值,该返回哪个位置?

【在 j*****8 的大作中提到】
: 第一题,按照cc150的解法,从右上角开始向左或向下二分查找的话,针对这个首尾可
: 能相等的情况不需要额外的 处理把

avatar
y*a
19
第一题:
List binarySearch(int[][]mx, int k) {
List rel=new ArrayList<>();
for (int m=mx.length,n=mx[0].length,l=0,r=m*n-1;l<=r;) {
int mid=l+(r-l)/2;
int y=mid/n,x=mid%n;
if (mx[y][x]==k) {rel.add(y);rel.add(x);break;}
else if (mx[y][x]else r=mid-1;
}
return rel;
}
第二题:
TreeNode reverseTree(TreeNode root) {
TreeNode p=null,c=root;
while (c!=null) {
TreeNode t1=c.left,t2=c.right;
c.left=t2;c.right=p;p=c;c=t1;
}
TreeNode rel=p;
while (p.right!=null) {
p.left=p.right.left;
p.right.left=null;
p=p.right;
}
return rel;
}
avatar
l*a
20
第一题如果相等怎么办
第二题,如果是三楼的情况返回什么

【在 y**********a 的大作中提到】
: 第一题:
: List binarySearch(int[][]mx, int k) {
: List rel=new ArrayList<>();
: for (int m=mx.length,n=mx[0].length,l=0,r=m*n-1;l<=r;) {
: int mid=l+(r-l)/2;
: int y=mid/n,x=mid%n;
: if (mx[y][x]==k) {rel.add(y);rel.add(x);break;}
: else if (mx[y][x]: else r=mid-1;
: }

avatar
y*a
21

第一题要进一步 clarify
第二题是
1 2
/ \ -> / \
2 3 3 1

【在 l*****a 的大作中提到】
: 第一题如果相等怎么办
: 第二题,如果是三楼的情况返回什么

avatar
l*a
22
没看清题?这个期待什么结果
1
/
2 3
4

【在 y**********a 的大作中提到】
:
: 第一题要进一步 clarify
: 第二题是
: 1 2
: / \ -> / \
: 2 3 3 1

avatar
l*a
23
原题已经告诉你有equal的情况
所以你的code不能得分

【在 y**********a 的大作中提到】
:
: 第一题要进一步 clarify
: 第二题是
: 1 2
: / \ -> / \
: 2 3 3 1

avatar
y*a
24

改了一下第一题。
boolean equal(int[][]mx, int i, int j) {
int m=mx.length,n=mx[0].length;
if (i<0||j>=m*n||j<0||i>=m*n) return false;
return mx[i/n][i%n]==mx[j/n][j%n];
}
int binarySearchBound(int[][]mx, int k, boolean lower) {
for (int m=mx.length,n=mx[0].length,l=0,r=m*n-1;l<=r;) {
int mid=l+(r-l)/2;
if (mx[mid/n][mid%n]==k) {
if (lower)
if (!equal(mx, mid, mid-1)) return mid;
else r=mid-1;
else
if (!equal(mx, mid, mid+1)) return mid;
else l=mid+1;

} else if (mx[mid/n][mid%n]else r=mid-1;
}
return -1;
}
public List> binarySearch(int[][]mx, int k) {
int n=mx[0].length;
int lb=binarySearchBound(mx, k, true), ub=binarySearchBound(mx, k,
false);
List> rel=new ArrayList<>();
if (lb==-1)return rel;
for (int i=lb;i<=ub;++i) {
int y=i/n,x=i%n;
List t=new ArrayList<>();
t.add(y);t.add(x);
rel.add(t);
}
return rel;
}

【在 l*****a 的大作中提到】
: 原题已经告诉你有equal的情况
: 所以你的code不能得分

avatar
l*s
25
第二题其实就是一个reverse linked list的变种。
TreeNode* flipUpsideDown2(TreeNode* root)
{
if (!root) return NULL;
TreeNode* dummy = new TreeNode(0);
dummy->left = root;
TreeNode* right = root->right;
root = root->left;
dummy->left->left = NULL;
dummy->left->right = NULL;
while (root)
{
TreeNode* tmp = root;
root = root->left;
tmp->left = right;
right = tmp->right;
tmp->right = dummy->left;
dummy->left = tmp;
}
root = dummy->left;
delete dummy;
return root;
}

【在 y**********a 的大作中提到】
: 第一题:
: List binarySearch(int[][]mx, int k) {
: List rel=new ArrayList<>();
: for (int m=mx.length,n=mx[0].length,l=0,r=m*n-1;l<=r;) {
: int mid=l+(r-l)/2;
: int y=mid/n,x=mid%n;
: if (mx[y][x]==k) {rel.add(y);rel.add(x);break;}
: else if (mx[y][x]: else r=mid-1;
: }

avatar
s*x
26
第一题估计出题的人都晕了, 你自己想想吧, 就是不折不扣的 binary search. 2D
array in that case is exactly 1D sorted array! no trick at all, exactly the
same.
1 2 3
4 5 6
is the same as 1 2 3 4 5 6!

【在 j*****8 的大作中提到】
: 第一题,按照cc150的解法,从右上角开始向左或向下二分查找的话,针对这个首尾可
: 能相等的情况不需要额外的 处理把

avatar
p*2
27
第二题这样怎么样
TreeNode dfs(TreeNode node, TreeNode parent){
if(node==null) return null;
TreeNode left_res = dfs(node.left,node);

if(parent!=null){
node.left = parent.right;
node.right = parent;
}
return left_res!=null?left_res:node;
}

TreeNode convert(TreeNode root){
return dfs(root,null);
}
avatar
m*k
28
出题的人就是想看面试者能否把这个larger(or
equal)条件用上而不是fall into
the other one 吧。

the

【在 s**x 的大作中提到】
: 第一题估计出题的人都晕了, 你自己想想吧, 就是不折不扣的 binary search. 2D
: array in that case is exactly 1D sorted array! no trick at all, exactly the
: same.
: 1 2 3
: 4 5 6
: is the same as 1 2 3 4 5 6!

avatar
m*k
29
how about
1
3
what is the result?

【在 l*****a 的大作中提到】
: 没看清题?这个期待什么结果
: 1
: /
: 2 3
: 4

avatar
m*k
30
reverse(TreeNode n)
{
if (n==null){
return null;
}
if(n.left==null){
return n;
}
Node root = reverse(n.left);
n.left.left = n.right;
n.right = null;
n.left.right = n;
n.left = null;
return root;
}
avatar
p*a
31
第一题,有重复元素的话,如何二分?
avatar
t*a
32
第一题是leetcode原题,不是search index, 是Search for a Range。直接返回一个
range
avatar
f*a
33
1. 2D matrix, sorted on each row, first element of next row is larger(or
equal) to the last element of previous row, now giving a target number,
returning the position that the target locates within the matrix
2. Given a binary tree where all the right nodes are leaf nodes, flip it
upside down
* and turn it into a tree with left leaf nodes.
*
* for example, turn these:
*
* 1 1
* / /
* 2 3 2 3
* /
* 4 5
* /
* 6 7
*
* into these:
*
* 1 1
* / /
* 2---3 2---3
* /
* 4---5
* /
* 6---7
*
* where 6 is the new root node for the left tree, and 2 for the right tree.
* oriented correctly:
*
* 6 2
* / /
* 7 4 3 1
* /
* 5 2
* /
* 3 1
*/
avatar
r*k
34
谢谢分享

【在 f*****a 的大作中提到】
: 1. 2D matrix, sorted on each row, first element of next row is larger(or
: equal) to the last element of previous row, now giving a target number,
: returning the position that the target locates within the matrix
: 2. Given a binary tree where all the right nodes are leaf nodes, flip it
: upside down
: * and turn it into a tree with left leaf nodes.
: *
: * for example, turn these:
: *
: * 1 1

avatar
l*a
35
这个期待什么结果
1
/
2 3
4

【在 f*****a 的大作中提到】
: 1. 2D matrix, sorted on each row, first element of next row is larger(or
: equal) to the last element of previous row, now giving a target number,
: returning the position that the target locates within the matrix
: 2. Given a binary tree where all the right nodes are leaf nodes, flip it
: upside down
: * and turn it into a tree with left leaf nodes.
: *
: * for example, turn these:
: *
: * 1 1

avatar
m*9
36
LZ好人,谢谢分享,Bless. 答案是要在google doc里写吗?
avatar
t*i
37
第二题保证除了第一层每层都有2个节点么?

【在 f*****a 的大作中提到】
: 1. 2D matrix, sorted on each row, first element of next row is larger(or
: equal) to the last element of previous row, now giving a target number,
: returning the position that the target locates within the matrix
: 2. Given a binary tree where all the right nodes are leaf nodes, flip it
: upside down
: * and turn it into a tree with left leaf nodes.
: *
: * for example, turn these:
: *
: * 1 1

avatar
e*i
38
<=2

【在 t*******i 的大作中提到】
: 第二题保证除了第一层每层都有2个节点么?
avatar
t*e
40
第一题中的equal条件有什么陷阱么?还是说和leetcode上那道search 2D matrix是一
样的?
avatar
f*a
41
统一回复:
1. 电面不用Gdoc,用CollabEdit
2. 第一题其实是LC原题的变种,等于的边界情况稍微处理一下就可以了

【在 f*****a 的大作中提到】
: 1. 2D matrix, sorted on each row, first element of next row is larger(or
: equal) to the last element of previous row, now giving a target number,
: returning the position that the target locates within the matrix
: 2. Given a binary tree where all the right nodes are leaf nodes, flip it
: upside down
: * and turn it into a tree with left leaf nodes.
: *
: * for example, turn these:
: *
: * 1 1

avatar
j*8
42
第一题,按照cc150的解法,从右上角开始向左或向下二分查找的话,针对这个首尾可
能相等的情况不需要额外的 处理把

【在 f*****a 的大作中提到】
: 统一回复:
: 1. 电面不用Gdoc,用CollabEdit
: 2. 第一题其实是LC原题的变种,等于的边界情况稍微处理一下就可以了

avatar
x*u
43
mark
avatar
j*3
44
lz是new grad么
avatar
t*e
45
同问如果target正好是重复值,该返回哪个位置?

【在 j*****8 的大作中提到】
: 第一题,按照cc150的解法,从右上角开始向左或向下二分查找的话,针对这个首尾可
: 能相等的情况不需要额外的 处理把

avatar
y*a
46
第一题:
List binarySearch(int[][]mx, int k) {
List rel=new ArrayList<>();
for (int m=mx.length,n=mx[0].length,l=0,r=m*n-1;l<=r;) {
int mid=l+(r-l)/2;
int y=mid/n,x=mid%n;
if (mx[y][x]==k) {rel.add(y);rel.add(x);break;}
else if (mx[y][x]else r=mid-1;
}
return rel;
}
第二题:
TreeNode reverseTree(TreeNode root) {
TreeNode p=null,c=root;
while (c!=null) {
TreeNode t1=c.left,t2=c.right;
c.left=t2;c.right=p;p=c;c=t1;
}
TreeNode rel=p;
while (p.right!=null) {
p.left=p.right.left;
p.right.left=null;
p=p.right;
}
return rel;
}
avatar
l*a
47
第一题如果相等怎么办
第二题,如果是三楼的情况返回什么

【在 y**********a 的大作中提到】
: 第一题:
: List binarySearch(int[][]mx, int k) {
: List rel=new ArrayList<>();
: for (int m=mx.length,n=mx[0].length,l=0,r=m*n-1;l<=r;) {
: int mid=l+(r-l)/2;
: int y=mid/n,x=mid%n;
: if (mx[y][x]==k) {rel.add(y);rel.add(x);break;}
: else if (mx[y][x]: else r=mid-1;
: }

avatar
y*a
48

第一题要进一步 clarify
第二题是
1 2
/ \ -> / \
2 3 3 1

【在 l*****a 的大作中提到】
: 第一题如果相等怎么办
: 第二题,如果是三楼的情况返回什么

avatar
l*a
49
没看清题?这个期待什么结果
1
/
2 3
4

【在 y**********a 的大作中提到】
:
: 第一题要进一步 clarify
: 第二题是
: 1 2
: / \ -> / \
: 2 3 3 1

avatar
l*a
50
原题已经告诉你有equal的情况
所以你的code不能得分

【在 y**********a 的大作中提到】
:
: 第一题要进一步 clarify
: 第二题是
: 1 2
: / \ -> / \
: 2 3 3 1

avatar
y*a
51

改了一下第一题。
boolean equal(int[][]mx, int i, int j) {
int m=mx.length,n=mx[0].length;
if (i<0||j>=m*n||j<0||i>=m*n) return false;
return mx[i/n][i%n]==mx[j/n][j%n];
}
int binarySearchBound(int[][]mx, int k, boolean lower) {
for (int m=mx.length,n=mx[0].length,l=0,r=m*n-1;l<=r;) {
int mid=l+(r-l)/2;
if (mx[mid/n][mid%n]==k) {
if (lower)
if (!equal(mx, mid, mid-1)) return mid;
else r=mid-1;
else
if (!equal(mx, mid, mid+1)) return mid;
else l=mid+1;

} else if (mx[mid/n][mid%n] else r=mid-1;
}
return -1;
}
public List> binarySearch(int[][]mx, int k) {
int n=mx[0].length;
int lb=binarySearchBound(mx, k, true), ub=binarySearchBound(mx, k,
false);
List> rel=new ArrayList<>();
if (lb==-1)return rel;
for (int i=lb;i<=ub;++i) {
int y=i/n,x=i%n;
List t=new ArrayList<>();
t.add(y);t.add(x);
rel.add(t);
}
return rel;
}

【在 l*****a 的大作中提到】
: 原题已经告诉你有equal的情况
: 所以你的code不能得分

avatar
l*s
52
第二题其实就是一个reverse linked list的变种。
TreeNode* flipUpsideDown2(TreeNode* root)
{
if (!root) return NULL;
TreeNode* dummy = new TreeNode(0);
dummy->left = root;
TreeNode* right = root->right;
root = root->left;
dummy->left->left = NULL;
dummy->left->right = NULL;
while (root)
{
TreeNode* tmp = root;
root = root->left;
tmp->left = right;
right = tmp->right;
tmp->right = dummy->left;
dummy->left = tmp;
}
root = dummy->left;
delete dummy;
return root;
}

【在 y**********a 的大作中提到】
: 第一题:
: List binarySearch(int[][]mx, int k) {
: List rel=new ArrayList<>();
: for (int m=mx.length,n=mx[0].length,l=0,r=m*n-1;l<=r;) {
: int mid=l+(r-l)/2;
: int y=mid/n,x=mid%n;
: if (mx[y][x]==k) {rel.add(y);rel.add(x);break;}
: else if (mx[y][x]: else r=mid-1;
: }

avatar
s*x
53
第一题估计出题的人都晕了, 你自己想想吧, 就是不折不扣的 binary search. 2D
array in that case is exactly 1D sorted array! no trick at all, exactly the
same.
1 2 3
4 5 6
is the same as 1 2 3 4 5 6!

【在 j*****8 的大作中提到】
: 第一题,按照cc150的解法,从右上角开始向左或向下二分查找的话,针对这个首尾可
: 能相等的情况不需要额外的 处理把

avatar
p*2
54
第二题这样怎么样
TreeNode dfs(TreeNode node, TreeNode parent){
if(node==null) return null;
TreeNode left_res = dfs(node.left,node);

if(parent!=null){
node.left = parent.right;
node.right = parent;
}
return left_res!=null?left_res:node;
}

TreeNode convert(TreeNode root){
return dfs(root,null);
}
avatar
m*k
55
出题的人就是想看面试者能否把这个larger(or
equal)条件用上而不是fall into
the other one 吧。

the

【在 s**x 的大作中提到】
: 第一题估计出题的人都晕了, 你自己想想吧, 就是不折不扣的 binary search. 2D
: array in that case is exactly 1D sorted array! no trick at all, exactly the
: same.
: 1 2 3
: 4 5 6
: is the same as 1 2 3 4 5 6!

avatar
m*k
56
how about
1
3
what is the result?

【在 l*****a 的大作中提到】
: 没看清题?这个期待什么结果
: 1
: /
: 2 3
: 4

avatar
m*k
57
reverse(TreeNode n)
{
if (n==null){
return null;
}
if(n.left==null){
return n;
}
Node root = reverse(n.left);
n.left.left = n.right;
n.right = null;
n.left.right = n;
n.left = null;
return root;
}
avatar
p*a
58
第一题,有重复元素的话,如何二分?
avatar
t*a
59
第一题是leetcode原题,不是search index, 是Search for a Range。直接返回一个
range
avatar
g*r
60
Can the code handle?
1
/
2 3

4

【在 p*****2 的大作中提到】
: 第二题这样怎么样
: TreeNode dfs(TreeNode node, TreeNode parent){
: if(node==null) return null;
: TreeNode left_res = dfs(node.left,node);
:
: if(parent!=null){
: node.left = parent.right;
: node.right = parent;
: }
: return left_res!=null?left_res:node;

avatar
g*r
61
What about this:
TreeNode *flipTree(TreeNode *root)
{
if(!root) return NULL;
if(root->left){ // recursively deal with left child
TreeNode *newRoot = flipTree(root->left);
root->left->left = root->right;
root->left->right = root;
return newRoot;
}
else if(root->right){ //no left child, has right child, can only happen
at left most node
root->right->right = root;
return root->right;
}
else{ //left most node is leaf
return root;
}
}
after calling flipTree, do not forget to set root->left and root->right to
NULL.

【在 g********r 的大作中提到】
: Can the code handle?
: 1
: /
: 2 3
:
: 4

avatar
f*t
62
// Given a binary tree where all the right nodes are either leaf nodes with
a sibling (a left node that shares the same parent node) or empty, flip it
upside down and turn it into a tree where the original right nodes turned
into left leaf nodes. Return the new root.
// {1,2,3,4,5}, to [4,5,2,#,#,3,1]
class BiTree {
struct Node {
char val;
Node *left, *right;
Node(char c) : val(c), left(nullptr), right(nullptr) {}
};
Node *_root;
public:
BiTree(string s) {
queue qu;
if (s.empty()) {
_root = nullptr;
return;
}
_root = new Node(s[0]);
qu.push(_root);
auto it = s.begin();
while (!qu.empty()) {
Node *cur = qu.front();
qu.pop();
if (++it == s.end()) {
return;
}
if (*it != '#') {
cur->left = new Node(*it);
qu.push(cur->left);
}
if (++it == s.end()) {
return;
}
if (*it != '#') {
cur->right = new Node(*it);
qu.push(cur->right);
}
}
}
void Dump() {
if (!_root) {
return;
}
queue qu;
qu.push(_root);
string s{_root->val};
while (!qu.empty()) {
Node *cur = qu.front();
qu.pop();
if (cur->left) {
s.push_back(cur->left->val);
qu.push(cur->left);
} else {
s.push_back('#');
}
if (cur->right) {
s.push_back(cur->right->val);
qu.push(cur->right);
} else {
s.push_back('#');
}
}
cout << "dump: " << s << endl;
}
void Flip() {
if (!_root) {
return;
}
Node *cur = _root;
stack sk;
while (cur) {
sk.push(cur);
cur = cur->left;
}
_root = sk.top();
sk.pop();
cur = _root;
while (!sk.empty()) {
cur->right = sk.top();
cur->left = sk.top()->right;
cur->left->left = nullptr;
cur->left->right = nullptr;
cur = cur->right;
sk.pop();
}
cur->left = nullptr;
cur->right = nullptr;
}
Node* FlipR(Node *root) {
if (root->left) {
Node *r = FlipR(root->left);
root->left->left = root->right;
root->left->right = root;
root->left = nullptr;
root->right = nullptr;
return r;
} else {
return root;
}
}
void FlipRecusion() {
if (!_root) {
return;
}
_root = FlipR(_root);
}
};
void BiTreeTest() {
BiTree bt("12345");
bt.Dump();
bt.FlipRecusion();
bt.Dump();
}
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。