天池 在线编程 最佳利用率(二分查找 + 哈希)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给两个排序的数组。
从两个数组中各取取一个数,这两个数之和需要小于或等于k, 需要找到两数之和最大的索引组合。
返回一对包含两个列表的索引。
如果有多个两数之和相等的索引答案,你应该选择第一个数组索引最小的索引对。
在此前提下,你应该选择第二个数组索引最小的索引对。

1)两数的总和<= k
2)总和是最大的
3)两个数组索引都尽量最小

如果你无法找到答案,你应返回一个空列表[]。
You can assume that the numbers in arrays are all positive integer or zero.

示例1
输入:
A = [1, 4, 6, 9], B = [1, 2, 3, 4], K = 9
输出: 
[2, 2]示例2:
输入: 
A = [1, 4, 6, 8], B = [1, 2, 3, 5], K = 12
输出:
[2, 3]

https://tianchi.aliyun.com/oj/338592228998370026/357527484118536803

2. 解题

  • 遍历 B 的元素,记录每个值第一次出现的位置
  • 遍历 A,在 B 中查找小于等于 K-A[i] 的最大的数
  • 时间复杂度 O(n1log⁡n2)O(n_1\log n_2)O(n1logn2)
class Solution {
public:/*** @param A: an integer sorted array* @param B: an integer sorted array* @param K: an integer* @return: return a pair of index*/vector<int> optimalUtilization(vector<int> &A, vector<int> &B, int K) {// write your code hereif(A.empty() || B.empty() || A[0]+B[0] > K) return {};unordered_map<int,int> m;for(int i = 0; i < B.size(); ++i)if(m.find(B[i]) == m.end())m[B[i]] = i;//每个数最早出现的位置int i = 0, j = B.size()-1, n1 = A.size(), n2 = B.size(), sum, maxsum=INT_MIN;vector<int> ans(2);for(int i = 0; i < n1; ++i){int t = K-A[i];int l = 0, r = n2-1, pos=-1;while(l <= r)	// 二分查找{int mid = l+((r-l)>>1);if(B[mid] > t)r = mid-1;else{if(mid==n2-1 || B[mid+1] > t){pos = mid;break;}elsel = mid+1;}}if(pos != -1){sum = A[i]+B[pos];if(sum > maxsum){maxsum = sum;ans[0] = i;ans[1] = m[B[pos]];}}elsebreak;}return ans;}
};

50ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

python re 匹配多行_Python正则表达式,看这一篇就够了

作者 | 猪哥来源 | 裸睡的猪(ID: IT--Pig)大多数编程语言的正则表达式设计都师从Perl&#xff0c;所以语法基本相似&#xff0c;不同的是每种语言都有自己的函数去支持正则&#xff0c;今天我们就来学习 Python中关于 正则表达式的函数。re模块主要定义了9个常量、12个函数、1个…

nsga2算法_用遗传算法进行容量管理 让虚拟机放置策略更优

随着互联网技术的高速发展&#xff0c;云计算已经成为各行各业的“水电煤”&#xff0c;成为“互联网”的基础设施&#xff0c;而数据中心则是云服务背后的刚性保障。无论是传统的数据中心&#xff0c;还是云形态的数据中心&#xff0c;虚拟化技术都是提升其资源利用率、降低管…

php预处理_如何用预处理让 PHP 更先进

原标题&#xff1a;如何用预处理让 PHP 更先进先来点趣事。不久以前&#xff0c; 来添加 Python 的 range 语法。然后&#xff0c; 大虾 &#xff0c;并且 建议为 PHP 添加 C# 风格的 getter 和 setter。我意识到对于一个局外人来说&#xff0c;建议和实现新的语言特性是件缓慢…

天池 在线编程 两句话中的不常见单词(哈希计数)

文章目录1. 题目2. 解题1. 题目 给定两个句子 A 和 B 。 &#xff08;句子是一串由空格分隔的单词。每个单词仅由小写字母组成。&#xff09; 如果一个单词在其中一个句子中只出现一次&#xff0c;在另一个句子中却没有出现&#xff0c;那么这个单词就是不常见的。 返回所有…

iphone屏幕上的圆圈怎么设置_iPhone手机屏幕突然变暗或者黑屏怎么办?看这里你就知道该怎么办...

阅读本文前&#xff0c;请您先点击上面的蓝色字体&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到各种有关娱乐的文章了。每天都有分享&#xff0c;完全是免费订阅&#xff0c;请放心关注。 …

C语言库函数大全及应用实例六

C语言库函数大全及应用实例六 原文:C语言库函数大全及应用实例六[编程资料]C语言库函数大全及应用实例六函数名: getlinesettings 功 能: 取当前线型、模式和宽度 用 法: void far getlinesettings(struct linesettingstype far *lininfo): 程序例: <?xml:namespace prefix…

python开发自己的工具包_爬虫开发python工具包介绍 (4)

本文来自网易云社区作者&#xff1a;王涛此处我们给出几个常用的代码例子&#xff0c;包括get,post(json,表单),带证书访问&#xff1a;Get 请求gen.coroutinedef fetch_url():try:c CurlAsyncHTTPClient() # 定义一个httpclientmyheaders {"Host": "weixin.…

天池 在线编程 最小的行程(动态规划)

文章目录1. 题目2. 解题1. 题目 给定一个二维矩阵&#xff0c;找到从上到下的最小路径。只能向左下&#xff0c;下&#xff0c;右下移动 所有的元素都是正整数 矩阵大小 < 200x200 样例 1: 输入: 1 2 3 4 5 6 7 8 9 输出: 12 解释: 最短的路径为:1->4->7, 返回12.样…

messagebox

private void button1_Click(object sender, EventArgs e){/*//弹出消息对话框&#xff0c;包含确定按钮MessageBox.Show("消息","标题");//弹出消息对话框&#xff0c;包含确定按钮MessageBox.Show("消息", "标题",MessageBoxButtons…

centos 升级php5.5_CentOS 5.x 系统yum 升级php到5.2.x的方法(测试可用)

在用的centos 5.4系统中&#xff0c;目前提供php版本为5.1.6&#xff0c;通过以下方法升级PHP到5.2比较方便。先将以下地址导入&#xff1a;复制代码 代码示例:# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka# vi /etc/yum.repos.d/CentOS-Base.repo 增加…

fluent瞬态计算终止条件在哪里设置_Fluent案例7【圆柱绕流】

一个瞬态的圆柱绕流案例知识点&#xff1a;瞬态圆柱绕流的模拟一个后处理的方法&#xff1a;将瞬态模型中一个点的速度变化绘成图表并将数值导出excel文件模型如下图所示&#xff0c;左边界为速度边界进口速度0.5m/s&#xff0c;试模拟出计算域中的速度变化打开workbench&#…

qq登录界面句柄_别小看QQ邮箱测试,80%的测试新手都不能写出完整的测试用例~...

对于很多刚进入测试行业的新手来说&#xff0c;由于自身的工作经验不足&#xff0c;虽有测试基础知识傍身&#xff0c;但仍然很难将测试用例写的尽善尽美。因此&#xff0c;学习别人的测试经验&#xff0c;将是你成为测试达人的必经之路。今天&#xff0c;我们就以QQ邮箱为例&a…

LeetCode 878. 第 N 个神奇数字(二分查找)

文章目录1. 题目2. 解题1. 题目 如果正整数可以被 A 或 B 整除&#xff0c;那么它是神奇的。 返回第 N 个神奇数字。由于答案可能非常大&#xff0c;返回它模 10^9 7 的结果。 示例 1&#xff1a; 输入&#xff1a;N 1, A 2, B 3 输出&#xff1a;2示例 2&#xff1a; 输…

js中的四舍五入函数

刚学到这部分时&#xff0c;感觉特别简单。可最近写个ajax分页时&#xff0c;忽然忘记应该怎么使用哪种函数来计算总的页数。。。哎&#xff0c;好记星不如烂笔头啊&#xff0c;还是老老实实的写下来吧。随时查看。 1.Math.ceil(x)&#xff1a;对x向上取整&#xff0c;即返回大…

为什么百度统计里面的广告那么多_里面东西一模一样的桶装方便面为什么比袋装贵那么多?...

今天特地买了一桶桶装的和一袋袋装的&#xff0c;同品牌同系列同口味&#xff0c;里面面饼&#xff0c;配料包也一模一样&#xff0c;桶装的只是多了一个小勺子&#xff0c;为什么一袋二元五&#xff0c;一桶就要卖4元&#xff1f;并且大家好像都不觉得有什么不妥……(好吧我就…

php获取页面视频文件,PHP获取各大视频网站页面中的Flash播放地址

先看一个简单的,我用PHP实现了这个功能,我觉得用PHP来做这项工作简直是一种享受&#xff01;使用其提供的强大的HTML页面处理函数和正则表达式&#xff0c;短短的几行代码就能搞定这个功能。贴一下关键代码://获取优酷页面中的flash地址function get_flash_url( $url ){$lines …

LeetCode 1790. 仅执行一次字符串交换能否使两个字符串相等

文章目录1. 题目2. 解题1. 题目 给你长度相等的两个字符串 s1 和 s2 。 一次 字符串交换 操作的步骤如下&#xff1a;选出某个字符串中的两个下标&#xff08;不必不同&#xff09;&#xff0c;并交换这两个下标所对应的字符。 如果对 其中一个字符串 执行 最多一次字符串交换…

gradle 上传jar包_Gradle学习记录014 关于依赖的声明

详细学习Gradle构建的依赖声明。该学习记录基于Gradle官方网站资料。本篇参考链接如下&#xff1a;https://docs.gradle.org/current/userguide/declaring_dependencies.html声明一个模块作为依赖通常声明一个模块作为依赖&#xff0c;需要指定这个模块的版本。Gradle提供了一套…

win10版本查看_想知道电脑中安装的win10版本号,用这3招就对了,一键查看

自从微软在Windows 10中更改了发布模型后&#xff0c;很多用户就对找出他们在电脑上安装的Windows 10版本感兴趣。大家可能都已经知道&#xff0c;微软不会再发布Windows的主要版本&#xff0c;而是会不断发布更新&#xff0c;这让人想起许多Linux发行版的滚动发行模型。如果你…

php熊掌号api,织梦dedecms熊掌号自动API提交当日资源php代码

你是不会代码&#xff0c;没有代码基础&#xff1f;是否每次还需要登录熊掌号后台&#xff1f;每次发表文章都需要登录熊掌号后台站点天级收录&#xff0c;进行提交资源网站链接&#xff1f;今天分享一段代码轻松解决这些问题。require_once ("include/common.inc.php&quo…