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

条纹电面

全局:

2022(1-3月) 码农类General 硕士 全职@stripe - 网上海投 - 技术电面  | 🙁 Negative 😐 Average | Fail | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
题目是“Keep Track of shopping customer”,算是老题了。
楼主做出了两问,第三问不够时间写完,第二天通知没过。
看到地里有人分享做了两问也过了,问了两个做完全部四问的朋友说没给过,另外有个朋友只写出了两问竟然过了。听说条纹通过的条件很随性,不知道是什么标准。
我就不隐藏了,造福大家。
求大米!!

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

评分

参与人数 11大米 +53 收起 理由
LRUkaixi + 1 很有用的信息!
Andyppp + 1 很有用的信息!
隐心月 + 2 很有用的信息!
hty + 1 很有用的信息!
bluejay + 1 楼主/层主请继续!

查看全部评分


上一篇:【非面经】想问一下亚麻PIP相关的问题
下一篇:quant 转码,发META MLE 挂经
地里匿名用户
🔗
匿名用户-9O3FM  2022-2-15 08:47:28
本帖最后由 匿名 于 2022-2-14 16:48 编辑

答案:
  1. fn main() {}

  2. fn compute_penalty(data: String, mut close_hour: i32) -> usize {
  3.     let data_a = data.as_bytes();
  4.     let mut res = 0;
  5.     let mut i = 0;
  6.     while i < data_a.len() {
  7.         if data_a[i] != b'Y' && data_a[i] != b'N' {
  8.             i += 1;
  9.             continue;
  10.         }
  11.         if close_hour > 0 {
  12.             if data_a[i] == b'N' {
  13.                 res += 1;
  14.             }
  15.         } else {
  16.             if data_a[i] == b'Y' {
  17.                 res += 1;
  18.             }
  19.         }
  20.         close_hour -= 1;
  21.         i += 1;
  22.     }
  23.     res
  24. }

  25. fn find_best_closing_time(data: String) -> usize {
  26.     let mut res = usize::MAX;
  27.     let mut close = 0usize;
  28.     let day: usize = data
  29.         .chars()
  30.         .filter(|&c| c == 'Y' || c == 'N')
  31.         .map(|_| 1)
  32.         .sum();
  33.     for i in 0..=data.len() {
  34.         let p = compute_penalty(data.clone(), i as i32);
  35.         if res > p {
  36.             res = p;
  37.             close = i;
  38.         }
  39.     }
  40.     close
  41. }

  42. fn get_best_closing_times_two(data: String) -> Vec<usize> {
  43.     let mut res = vec![];
  44.     for s in data.split("BEGIN") {
  45.         if let Some((l, _)) = s.split_once("END") {
  46.             let a = l.as_bytes();
  47.             let mut i = 0;
  48.             let mut input = "".to_owned();
  49.             while i < a.len() {
  50.                 if a[i] == b'Y' || a[i] == b'N' {
  51.                     input.push(a[i] as char);
  52.                 }
  53.                 i += 1;
  54.             }
  55.             if input.len() == 0 {
  56.                 continue;
  57.             }
  58.             res.push(find_best_closing_time(input));
  59.         }
  60.     }
  61.     res
  62. }

  63. #[cfg(test)]
  64. mod tests {
  65.     use super::*;
  66.     #[test]
  67.     fn test_one() {
  68.         assert_eq!(compute_penalty("Y Y N Y".to_owned(), 0), 3);
  69.         assert_eq!(compute_penalty("N Y N Y".to_owned(), 2), 2);
  70.         assert_eq!(compute_penalty("Y Y N Y".to_owned(), 4), 1);
  71.     }
  72.     #[test]
  73.     fn test_two() {
  74.         assert_eq!(find_best_closing_time("Y Y N N".to_owned()), 2);
  75.         assert_eq!(find_best_closing_time("Y N Y N".to_owned()), 1);
  76.     }
  77.     #[test]
  78.     fn test_three() {
  79.         assert_eq!(
  80.             get_best_closing_times_two("BEGIN Y Y END \nBEGIN N N END".to_owned()),
  81.             vec!(2, 0)
  82.         );
  83.         assert_eq!(
  84.             get_best_closing_times_two(
  85.                 "BEGIN BEGIN \nBEGIN N N BEGIN Y Y\n END N N END".to_owned()
  86.             ),
  87.             vec!(2)
  88.         );
  89.         assert_eq!(
  90.             get_best_closing_times_two(
  91.                 "Y Y N BEGIN Y N Y BEGIN BEGIN END Y END BEGIN Y Y N Y END BEGIN Y END Y N END"
  92.                     .to_owned()
  93.             ),
  94.             vec!(2, 1)
  95.         );
  96.         assert_eq!(
  97.             get_best_closing_times("BEGIN BEGIN N Y Y END Y Y Y N BEGIN N N N Y END".to_owned()),
  98.             vec!(3, 0)
  99.         );
  100.     }
  101. }
复制代码
回复

使用道具 举报

地里匿名用户
🔗
匿名用户-FFIIR  2022-2-16 06:10:22
楼主这个题一共有4问吗?我看只有3问呀?
回复

使用道具 举报

🔗
abc.xyz 2022-3-10 14:09:47 | 只看该作者
本楼:
全局:
感谢!!!
回复

使用道具 举报

🔗
pnhjd 2022-4-4 08:40:28 | 只看该作者
全局:
请问楼主几年经验?我能想到的都是O(N)的方法;还有更优的吗?
回复

使用道具 举报

🔗
 楼主| nedved 2022-4-7 08:55:46 | 只看该作者
全局:
pnhjd 发表于 2022-4-3 20:40
请问楼主几年经验?我能想到的都是O(N)的方法;还有更优的吗?

5-10年。O(n)就够了。
回复

使用道具 举报

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

本版积分规则

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