📣 美国国庆限时特惠: VIP通行证立减$68
查看: 1384| 回复: 6
跳转到指定楼层
上一主题 下一主题
收起左侧

[字符串] 求这道亚麻oa最优解

🔗
匿名用户-1GDLK  2022-2-16 14:24:16 |倒序浏览

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

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

x
I don't remember the exact wording but. Given an array of integers, and a maximum difference k, return the minimum number of groups that any two integers do not have difference bigger than k.

Say, we have [6,1,3,4,3,5], and k is 2, we will return 2 because we have minimum of two groups [1,3,3] and [4,5,6].
The way I solved it is that I sorted the array first and iterate through the array. Is there a more optimal solution for this one?


上一篇:蠡口 要要要漆 造H2O
下一篇:亚麻oa 分享
🔗
yigeiwuligiao 2022-2-16 14:53:12 | 只看该作者
全局:
本帖最后由 yigeiwuligiao 于 2022-2-15 22:56 编辑

Sort (如果题目不要求顺序)  + 二分法猜答案, low 1 high arr.length -1

评分

参与人数 1大米 +1 收起 理由
14417335 + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

全局:
去重后排序,再分
回复

使用道具 举报

🔗
zxyOFHA 2022-3-10 22:35:40 | 只看该作者
全局:
排序是NLOGN, 应该可以用O(N) 解: 先遍历把所有数字加入set 并找出最大最小,再从最小的min开始遍历,看 min +0-k 是不是在set里面,如果在就group++,并且 往前移动min += k+1, 这是ON  的解法,不知道有没有edge case 过不了
回复

使用道具 举报

🔗
pjy434 2022-3-13 03:12:24 来自APP | 只看该作者
全局:
zxyOFHA 发表于 2022-03-10 06:35:40
排序是NLOGN, 应该可以用O(N) 解: 先遍历把所有数字加入set 并找出最大最小,再从最小的min开始遍历,看 min +0-k 是不是在set里面,如果在就group++,并且 往前移动mi
这样好像不行吧,因为原数组可能有重复数字的

补充内容 (2022-03-13 03:21 +08:00):
应该是他每个数字之间可以差很多,可能前一个数是一,下一个数就变成一万了,我感觉只能排序
回复

使用道具 举报

🔗
zxyOFHA 2022-3-13 05:38:50 | 只看该作者
全局:
pjy434 发表于 2022-3-12 14:12
这样好像不行吧,因为原数组可能有重复数字的

补充内容 (2022-03-13 03:21 +08:00):

觉得对的话加个米吧
  1. public static int minGroupON(int[] awards, int k){        
  2.         Set<Integer> set = new HashSet<>();
  3.         int min = Integer.MAX_VALUE;
  4.         int max = Integer.MIN_VALUE;
  5.         for(int award: awards){
  6.             set.add(award);
  7.             min = Math.min(award,min);
  8.             max = Math.max(award,max);
  9.         }
  10.         int pointer = min;
  11.         int count = 0;
  12.         while(pointer<=max){
  13.             for(int i=0;i<=k;i++){
  14.                 if(set.contains(pointer+i)){
  15.                     pointer+=i;
  16.                     count++;
  17.                     break;
  18.                 }
  19.             }
  20.             pointer+=k+1;
  21.         }
  22.         return count;   
  23.     }
复制代码
回复

使用道具 举报

🔗
pjy434 2022-3-13 23:44:41 来自APP | 只看该作者
全局:
zxyOFHA 发表于 2022-03-12 13:38:50
觉得对的话加个米吧public static int minGroupON(int awards, int k){        
        Set<Integer> set = new Ha
这不是o(n)啊。。。而且算出来也不对。我觉得不用排序最快kn,就是对于每个hashset里的数字,往上查k个连续数字看是不是在hashset里
回复

使用道具 举报

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

本版积分规则

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