LintCode 1690. 朋友推荐(二分插入)

1. 题目

某交友网站会给除了第一个用户以外的每个新注册的用户推荐一位之前已经注册过并且性格值和他最相近的用户,如果有多人满足条件则选择性格值较小的。

给定数组val[]表示按时间顺序注册的 n 位用户的性格值,输出一个大小为 n-1 的数组,表示系统给这些人推荐的用户的性格值。

样例 1:
输入: val=[8,9,7,3,0,5,11]
输出: [8,8,7,3,3,9]
解释:
令 ans = []2 个数为 9,前面只有第 1 个数 8,此时 ans = [8]3 个数为 7,前面的数有 8, 9,与 7 性格值最小的为 8,此时 ans = [8, 8]4 个数为 3,前面的数有 8, 9, 7,与  3 性格值最小的为 7,此时 ans = [8, 8, 7]5 个数为 0,前面的数有 8, 9, 7, 3,与  0 性格值最小的为 3,此时 ans = [8, 8, 7, 3]6 个数为 5,前面的数有 8, 9, 7, 3, 0,与  5 性格值最小的为 3,此时 ans = [8, 8, 7, 3, 3]7 个数为 11,前面的数有 8, 9, 7, 3, 0, 5,与  11 性格值最小的为  9,此时 ans = [8, 8, 7, 3, 3, 9]样例 2:
输入: val=[465, 5464, 6467, 6466779, 6461, 56]
输出: [465,5464,6467,6467,465]
解释:
令 ans = []2 个数为 5464,前面只有第 1 个数 465,此时 ans = [465]3 个数为 6467,前面的数有 465, 5464,与 6467 性格值最小的为 5464,此时 ans = [465, 5464]4 个数为 6466779,前面的数有 465, 5464, 6467,与  6466779 性格值最小的为 6467,此时 ans = [465, 5464, 6467]5 个数为 6461,前面的数有 465, 5464, 6467, 6466779,与  6461 性格值最小的为 6467,此时 ans = [465, 5464, 6467, 6467]6 个数为 56,前面的数有 465, 5464, 6467, 6466779, 6461,与  56 性格值最小的为 465,此时 ans =[465, 5464, 6467, 6467, 465]注意事项
2<=n<=100000
0<=val<=1000000

类似题目:LeetCode 315. 计算右侧小于当前元素的个数(二叉查找树&二分查找&归并排序逆序数总结)

2. 解题

  • 给一个空数组,依次把性格值二分插入到其中
  • 检查插入位置前后跟我 绝对值较小 的取为答案
  • 变形版 二分查找请参考
class Solution {int l,r,mid;
public:vector<int> getAns(vector<int> &val) {if(val.size() <= 1)return {};vector<int> t;//二分插入数组t.push_back(val[0]);vector<int> ans(val.size()-1);int i, idx, k = 0, f, b;for(i = 1; i < val.size(); i++,k++){idx = bs(t,val[i]);//插入位置t.insert(t.begin()+idx+1,val[i]);//插入数组f = (idx >= 0 ? t[idx] : -10000000);//前面的性格值b = (idx+2 < t.size() ? t[idx+2] : -10000000);//后面的性格值if(abs(f-val[i]) <= abs(b-val[i]))ans[k] = t[idx];//取较小的elseans[k] = t[idx+2];}return ans;}int bs(vector<int> & a, int& target){	//二分查找,性格值小于等我的 最后一个l = 0, r = a.size()-1;while(l <= r){mid = l+((r-l)>>1);if(a[mid] > target)r = mid-1;else //(a[mid] <= target){if(mid==a.size()-1 || a[mid+1] > target)return mid;elsel = mid+1;}}return -1;}
};

100% 数据通过测试
总耗时 653 ms
您的提交打败了 35.48% 的提交!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/477059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WinForm与脚本的交互

这是去年学习SmartClient时写下的&#xff0c;有兴趣可以看看 将Winform Control嵌入IE,很多时候需要JS脚本与Control进行交互。一方面是在脚本中使用控件的属性&#xff0c;调用控件的方法&#xff0c;另外一方面是脚本中能够响应控件的事件。对于第一个问题较为简单&#…

我用AI大模型帮我写公众号赚钱!

文 |卖萌酱大家好&#xff0c;我是卖萌酱。最近太忙了&#xff0c;有很多想写的文章&#xff0c;但实在精力匮乏。怎么办&#xff0c;不能停更吧&#xff1f;就在这时&#xff0c;卖萌酱听到了一个新名词&#xff1a;AIGC。什么意思呢&#xff1f;我们知道互联网上的早期内容&a…

Nacos部署中的一些常见问题汇总

开个帖子&#xff0c;汇总一下读者经常提到的一些问题 问题一&#xff1a;Ubuntu下启动Nacos报错 问题描述 使用命令sh startup.sh -m standalone启动报错&#xff1a; ./startup.sh: 78: ./startup.sh: [[: not found./startup.sh: 88: ./startup.sh: [[: not found./startu…

土木工程正在沦为“天坑”专业…

文 | 羿阁&#xff08;发自凹非寺&#xff09;源 | 量子位一份转专业录用名单&#xff0c;直接把土木工程推向了舆论焦点。事情是这样的。前不久&#xff0c;湖南大学公示了2022年本科生转专业的一份名单。然后网友们惊奇地发现&#xff0c;土木工程学院共转出98人&#xff0c;…

Spring Cloud Alibaba基础教程:Nacos的集群部署

前情回顾&#xff1a; 《Spring Cloud Alibaba基础教程&#xff1a;使用Nacos实现服务注册与发现》《Spring Cloud Alibaba基础教程&#xff1a;支持的几种服务消费方式》《Spring Cloud Alibaba基础教程&#xff1a;使用Nacos作为配置中心》《Spring Cloud Alibaba基础教程&a…

智能客户端研究笔记(三)

本文大量引用了别人的文章&#xff0c;引用自http://www.microsoft.com/china/community/program/originalarticles/TechDoc/smartclient.mspx发布程序 1、在发布和更新服务器上设置一个虚拟目录&#xff08;如&#xff1a;SmartClient&#xff09;将应用组件的所有文件放置…

3月14日 我用Python几十行代码为女朋友画了一个爱心

今天是个特殊的日子&#xff0c;圆周率日&#xff0c;哈哈&#xff01;来对你爱的人表达爱吧&#xff01; 女朋友就是我爱人啦&#xff01;&#x1f601; # -*- coding:utf-8 -*- # Python Version: 3.7 # Time: 2020/3/14 13:14 # Author: Michael Ming # Website: https://m…

Pytorch显存分配机制与显存占用分析方法

文 | Connolly知乎&#xff08;已授权&#xff09;源 | 极市平台作者最近两年在研究分布式并行&#xff0c;经常使用PyTorch框架。一开始用的时候对于PyTorch的显存机制也是一知半解&#xff0c;连蒙带猜的&#xff0c;经常来知乎上来找答案&#xff0c;那么我就吸收大家的看法…

Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)

应用场景 我们在使用一些开源调度系统&#xff08;比如&#xff1a;elastic-job等&#xff09;的时候&#xff0c;对于任务的执行时间通常都是有规律性的&#xff0c;可能是每隔半小时执行一次&#xff0c;或者每天凌晨一点执行一次。然而实际业务中还存在另外一种定时任务&am…

LeetCode 1380. 矩阵中的幸运数(set)

1. 题目 给你一个 m * n 的矩阵&#xff0c;矩阵中的数字 各不相同 。请你按 任意 顺序返回矩阵中的所有幸运数。 幸运数是指矩阵中满足同时下列两个条件的元素&#xff1a; 在同一行的所有元素中最小在同一列的所有元素中最大 示例 1&#xff1a; 输入&#xff1a;matrix …

GARFIELD@10-07-2004

tit for tat转载于:https://www.cnblogs.com/rexhost/archive/2004/10/07/49560.html

DeepMind 发了篇论文,把我看笑了

文 | severus近日&#xff0c;曾开发出举世瞩目的 AlphaGo 的 DeepMind&#xff0c;在 ArXiv 上发表了一篇文章&#xff0c;名为&#xff1a;Meaning without reference in large language models文中提到&#xff0c;大参数规模的语言模型是已经具备了部分类人智能的&#xff…

Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)

应用场景 前两天我们已经介绍了两种Spring Cloud Stream对消息失败的处理策略&#xff1a; 自动重试&#xff1a;对于一些因环境原因&#xff08;如&#xff1a;网络抖动等不稳定因素&#xff09;引发的问题可以起到比较好的作用&#xff0c;提高消息处理的成功率。自定义错误…

LeetCode 1382. 将二叉搜索树变平衡(中序遍历+二分递归)

1. 题目 给你一棵二叉搜索树&#xff0c;请你返回一棵 平衡后 的二叉搜索树&#xff0c;新生成的树应该与原来的树有着相同的节点值。 如果一棵二叉搜索树中&#xff0c;每个节点的两棵子树高度差不超过 1 &#xff0c;我们就称这棵二叉搜索树是 平衡的 。 如果有多种构造方…

电影:『新警察故事』

【电影名称】&#xff1a;『新警察故事』 【主 演】&#xff1a; 成龙 谢霆锋 杨采妮 蔡卓妍 吴彦祖  【导 演】&#xff1a; 陈木胜 【内容简介】&#xff1a;《新警察故事》是成龙英皇电影公司的处女作&#xff0c;投资超过1亿6000万港元&#xff0c;请来香港顶尖电影…

NLP顶级赛事LIC2022霸榜经验分享!

语言是人类传递信息最重要的媒介&#xff0c;让机器理解语言并进行交互是人工智能的重要挑战。为推动语言与智能领域的技术发展和应用&#xff0c;中国中文信息学会、中国计算机学会和百度公司连续五年联合举办“语言与智能技术竞赛”&#xff0c;为中文NLP研究者和开发者提供同…

Spring Cloud Zuul中使用Swagger汇总API接口文档

有很多读者问过这样的一个问题&#xff1a;虽然使用Swagger可以为Spring MVC编写的接口生成了API文档&#xff0c;但是在微服务化之后&#xff0c;这些API文档都离散在各个微服务中&#xff0c;是否有办法将这些接口都整合到一个文档中&#xff1f;之前给大家的回复都只是简单的…

LeetCode 1381. 设计一个支持增量操作的栈(deque/数组)

1. 题目 请你设计一个支持下述操作的栈。 实现自定义栈类 CustomStack &#xff1a; CustomStack(int maxSize)&#xff1a;用 maxSize 初始化对象&#xff0c;maxSize 是栈中最多能容纳的元素数量&#xff0c;栈在增长到 maxSize 之后则不支持 push 操作。void push(int x)…

GARFIELD@10-31-2004

apprentice转载于:https://www.cnblogs.com/rexhost/archive/2004/10/31/59013.html

Spring Cloud构建微服务架构:分布式服务跟踪(入门)【Dalston版】

通过之前的N篇博文介绍&#xff0c;实际上我们已经能够通过使用它们搭建起一个基础的微服务架构系统来实现我们的业务需求了。但是&#xff0c;随着业务的发展&#xff0c;我们的系统规模也会变得越来越大&#xff0c;各微服务间的调用关系也变得越来越错综复杂。通常一个由客户…