楼主: aceldama
跳转到指定楼层
上一主题 下一主题
收起左侧

G家店面 - 已拒

🔗
Wyf2222 2019-5-8 13:24:35 | 只看该作者
全局:
my two cents:

  1. mem = {}
  2. def find_parent(n, target):
  3.     if target >= (1<<n)-1:
  4.         return -1
  5.    
  6.     if target in mem:
  7.         return mem[target]
  8.    
  9.     if (target+1)&target==0:
  10.         mem[target] = target*2+1
  11.         return mem[target]
  12.    
  13.     if (target+2)&(target+1)==0:
  14.         mem[target] = target+1
  15.         return mem[target]
  16.    
  17.     i = n-1
  18.     while i>=0:
  19.         tmp = 1<<i
  20.         if target & tmp !=0:
  21.             mem[target] = find_parent(n,target - tmp + 1) + tmp - 1
  22.             return mem[target]
  23.         i -= 1
复制代码

回复

使用道具 举报

🔗
peter668 2019-5-8 13:55:48 | 只看该作者
本楼:
全局:
谢谢分享!
回复

使用道具 举报

🔗
tuwei 2019-5-8 14:48:25 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
austinyu730 2019-5-9 02:08:45 | 只看该作者
全局:
qqaas 发表于 2019-5-8 06:03
办法一 开哈希表 便利一次树的同时 存子节点值:父节点值到哈希表里
办法二 修改树的结构,加一个TreeNode  ...

开哈希和修改树结构 都是一个概念 有一个从curNode->parent的映射
回复

使用道具 举报

全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

🔗
大头菜 2019-5-10 02:11:00 | 只看该作者
全局:
louzhu 最后是啥思路啊
回复

使用道具 举报

🔗
大头菜 2019-5-10 02:31:10 | 只看该作者
全局:
lq24 发表于 2019-5-8 08:54
假如n=3, 把所有数x都做一个 x=2^n -1 -x; 的变换,变换以后,x 的parent 就是 (x-1)/2 了,算出来以后,再 ...

层主能给个例子么?n = 3就行 多谢多谢 最后是怎么得到所有的parent节点的?
回复

使用道具 举报

🔗
czhang1974 2019-5-10 02:46:55 | 只看该作者
全局:
For finding the parent of one node in the tree. The recursive calls can be improved (vastly) by memorization but I think this shows the basic idea.

  1. int findParent(int n, int x) {
  2.     if(x < 3) return 3;
  3.         if(x == (1 >> n) - 1) return -1; // root

  4.     // If x is the left or right child of the root
  5.     if(x == (1 >> (n - 1)) || x == (1 >> n) - 2)
  6.         return (1 >> n) - 1;

  7.     if(x < (1 >> (n - 1))) // In left subtree
  8.         return findParent(n - 1, x);
  9.     else // In right subtree
  10.         return findParent(n - 1, x - (1 >> (n - 1)) + 1);
  11. }
复制代码




回复

使用道具 举报

🔗
czhang1974 2019-5-10 03:08:56 | 只看该作者
全局:
您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 100 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表