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

亚麻SDE2-OA

全局:

2021(4-6月) 码农类General 硕士 全职@amazon - 网上海投 - 在线笔试  | | Fail | 在职跳槽

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

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

x
Q1: 妖灵丝妖

Q2: There is an unsorted array. The requirement is to retu
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限 或 查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
ge 1<=len(arr0<=10^9.

求大米

评分

参与人数 2大米 +5 收起 理由
匿名用户-UAI0T + 3
纆夜韶夏 + 2 很有用的信息!

查看全部评分


上一篇:Akuna 2021 Qunat Dynamic 笔试机经
下一篇:刀大师蜜汁挂经
🔗
utm 2021-7-22 01:01:46 | 只看该作者
全局:
请问lz是105min coding + 20 min survey 的OA吗
回复

使用道具 举报

🔗
 楼主| ericchencn 2021-7-22 01:08:09 | 只看该作者
全局:
utm 发表于 2021-7-21 18:01
请问lz是105min coding + 20 min survey 的OA吗

是啊 紫薯紫薯紫薯紫薯
回复

使用道具 举报

🔗
范晓康 2021-7-22 08:18:47 | 只看该作者
全局:
Q2  用 merge sort做嗎? 這題好難..
回复

使用道具 举报

🔗
 楼主| ericchencn 2021-7-22 20:03:41 | 只看该作者
全局:
范晓康 发表于 2021-7-22 01:18
Q2  用 merge sort做嗎? 這題好難..

我网上找到了solution,但是看不懂
  1. void update(int idx, std::vector<int>&tree, int n) {
  2.         while (idx <= n) {
  3.                 tree[idx] ++;
  4.                 auto t = idx&-idx;
  5.                 idx += t;
  6.         }
  7. }

  8. int query(int idx, std::vector<int>&tree) {
  9.         int ans = 0;
  10.         while (idx != 0) {
  11.                 ans += tree[idx];
  12.                 idx -= (idx&-idx);
  13.         }
  14.         return ans;
  15. }
  16. //O(n*logn)
  17. int number_of_swaps_to_sort(std::vector<int> nums) {
  18.         int n = nums.size();
  19.         //It works if numbers are unique
  20.         //first compress the values keeping the order,  example [10, 4, 8 , 5] -> [4,1,3,2]
  21.         std::vector<int>aux = nums;
  22.         sort(aux.begin(), aux.end());
  23.         std::unordered_map<int, int>ranking;
  24.         for (int i = 0; i < n; i++) ranking[aux[i]] = i + 1;
  25.         for (int i = 0; i < n; i++) nums[i] = ranking[nums[i]];

  26.         //[4, 1,3 ,2]  for each value, count number of elements on right side which are smaller than it.
  27.         //we can use binary indexed trees
  28.         std::vector<int>tree(n + 1, 0);
  29.         int ans = 0;
  30.         for (int i = n - 1; i >= 0; i--) {
  31.                 update(nums[i], tree, n);
  32.                 ans += query(nums[i] - 1, tree);
  33.         }

  34.         return ans;
  35. }
复制代码


评分

参与人数 1大米 +1 收起 理由
范晓康 + 1 赞一个

查看全部评分

回复

使用道具 举报

🔗
LuckyBiu 2021-7-25 09:07:16 | 只看该作者
全局:
楼主请问是找到最小swap次数吗?有没有只能swap相邻元素的限制呀?
回复

使用道具 举报

🔗
 楼主| ericchencn 2021-8-5 00:38:08 | 只看该作者
全局:
LuckyBiu 发表于 2021-7-25 02:07
楼主请问是找到最小swap次数吗?有没有只能swap相邻元素的限制呀?

对,只能swap相邻的
回复

使用道具 举报

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

本版积分规则

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