12
返回列表 发新帖
楼主: 海拔2纳米
跳转到指定楼层
上一主题 下一主题
收起左侧

G家店面

🔗
Fioooooona 2018-5-7 03:26:44 | 只看该作者
全局:
海拔2纳米 发表于 2018-5-6 10:23
是的,不是n*n没法in place,是个大水题

谢谢楼主~
回复

使用道具 举报

全局:
第二题感觉一个hashmap就搞定了。关键是在做set_manager, set_peer时看有没有环出现
回复

使用道具 举报

全局:
第二题:
  1. public class QueryMangerImpl implements QueryManger{

  2.     Map<Integer, Integer> employmentMap;

  3.     public QueryMangerImpl () {}

  4.     @Override
  5.     public void setManger(int manager, int employee) throws CyclicRelationFoundException {
  6.         if (queryManager(employee, manager)) {
  7.             throw new CyclicRelationFoundException(String.format("There is management relation from %s to %s",
  8.                     manager, employee));
  9.         }
  10.         employmentMap.put(employee, manager);
  11.     }

  12.     @Override
  13.     public void setPeer(int managerFrom, int employee) throws EmployeeNotFoundException, CyclicRelationFoundException {
  14.         if (!employmentMap.containsKey(managerFrom)) {
  15.             throw new EmployeeNotFoundException(String.format("Employee %s is not found"));
  16.         }
  17.         int newManager = employmentMap.get(managerFrom);
  18.         if (queryManager(employee, newManager)) {
  19.             throw new CyclicRelationFoundException(String.format("There is management relation from %s to %s", newManager, employee));
  20.         }
  21.         employmentMap.put(employee, newManager);
  22.     }

  23.     @Override
  24.     public boolean queryManager(int manager, int employee) {
  25.         if (manager == employee) {
  26.             return false;
  27.         }
  28.         while (employmentMap.containsKey(employee)) {
  29.             employee = employmentMap.get(employee);
  30.             if (employee == manager) {
  31.                 return true;
  32.             }
  33.         }
  34.         return false;
  35.     }

  36. }

  37. public interface QueryManger {
  38.     public void setManger(int manager, int employee) throws CyclicRelationFoundException;
  39.     public void setPeer(int managerFrom, int target) throws CyclicRelationFoundException, EmployeeNotFoundException;
  40.     public boolean queryManager(int manager, int employee);
  41. }

  42. public class CyclicRelationFoundException extends Exception {
  43.     public CyclicRelationFoundException(String message) {
  44.         super(message);
  45.     }
  46. }
复制代码
回复

使用道具 举报

全局:
  1. public class EmployeeNotFoundException extends Exception {
  2.     public EmployeeNotFoundException(String message) {
  3.         super(message);
  4.     }
  5. }
复制代码
回复

使用道具 举报

🔗
huangya2 2018-5-22 13:51:54 | 只看该作者
本楼:
全局:
拓扑排序?
回复

使用道具 举报

🔗
huangya2 2018-5-22 13:52:23 | 只看该作者
本楼:
全局:
union find
回复

使用道具 举报

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

本版积分规则

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