LeetCode 1533. Find the Index of the Large Integer(二分查找)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

We have an integer array arr, where all the integers in arr are equal except for one integer which is larger than the rest of the integers. You will not be given direct access to the array, instead, you will have an API ArrayReader which have the following functions:

  • int compareSub(int l, int r, int x, int y): where 0 <= l, r, x, y < ArrayReader.length(), l <= r and x <= y. The function compares the sum of sub-array arr[l…r] with the sum of the sub-array arr[x…y] and returns:
    1 if arr[l]+arr[l+1]+...+arr[r] > arr[x]+arr[x+1]+...+arr[y].
    0 if arr[l]+arr[l+1]+...+arr[r] == arr[x]+arr[x+1]+...+arr[y].
    -1 if arr[l]+arr[l+1]+...+arr[r] < arr[x]+arr[x+1]+...+arr[y].
  • int length(): Returns the size of the array.

You are allowed to call compareSub() 20 times at most. You can assume both functions work in O(1) time.

Return the index of the array arr which has the largest integer.

Follow-up:

  • What if there are two numbers in arr that are bigger than all other numbers?
  • What if there is one number that is bigger than other numbers and one number that is smaller than other numbers?
Example 1:
Input: arr = [7,7,7,7,10,7,7,7]
Output: 4
Explanation: The following calls to the API
reader.compareSub(0, 0, 1, 1) 
// returns 0 this is a query comparing the sub-array (0, 0) with the sub array (1, 1), (i.e. compares arr[0] with arr[1]).
Thus we know that arr[0] and arr[1] doesn't contain the largest element.
reader.compareSub(2, 2, 3, 3) 
// returns 0, we can exclude arr[2] and arr[3].
reader.compareSub(4, 4, 5, 5) 
// returns 1, thus for sure arr[4] is the largest element in the array.
Notice that we made only 3 calls, so the answer is valid.Example 2:
Input: nums = [6,6,12]
Output: 2Constraints:
2 <= arr.length <= 5 * 10^5
1 <= arr[i] <= 100
All elements of arr are equal except for one element which is larger than all other elements.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-index-of-the-large-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

/*** // This is the ArrayReader's API interface.* // You should not implement it, or speculate about its implementation* class ArrayReader {*   public:*     // Compares the sum of arr[l..r] with the sum of arr[x..y] *     // return 1 if sum(arr[l..r]) > sum(arr[x..y])*     // return 0 if sum(arr[l..r]) == sum(arr[x..y])*     // return -1 if sum(arr[l..r]) < sum(arr[x..y])*     int compareSub(int l, int r, int x, int y);**     // Returns the length of the array*     int length();* };*/class Solution {
public:int getIndex(ArrayReader &reader) {int n = reader.length(), l = 0, r = n-1, midl, midr;int flag;while(l < r){if((r-l)&1)//差为奇数midl = (l+r)/2,midr = (l+r)/2+1;else//偶数midl = midr = (l+r)/2;flag = reader.compareSub(l, midl, midr,r);if(flag > 0)//左边和大r = midl;else if(flag < 0)//右边和大l = midr;else//相等找到了return midl;}return l;}
};

200 ms 39.7 MB


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

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

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

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

相关文章

MySQL Server Architecture

MySQL 服务器架构&#xff1a; 转载于:https://www.cnblogs.com/macleanoracle/archive/2013/03/19/2968212.html

LeetCode MySQL 1479. 周内每天的销售情况(dayname星期几)

文章目录1. 题目2. 解题1. 题目 表&#xff1a;Orders ------------------------ | Column Name | Type | ------------------------ | order_id | int | | customer_id | int | | order_date | date | | item_id | varchar | | quantity …

php的swoole教程,PHP + Swoole2.0 初体验(swoole入门教程)

PHP Swoole2.0 初体验(swoole入门教程)环境&#xff1a;centos7 PHP7.1 swoole2.0准备工作&#xff1a;一、 swoole 扩展安装1 、下载swoolecd/usr/localwget -c https://github.com/swoole/swoole-src/archive/v2.0.8.tar.gztar -zxvf v2.0.8.tar.gzcdswoole-src-2.0.8/2 编…

Git常用命令解说

http://zensheno.blog.51cto.com/2712776/490748 1. Git概念 1.1. Git库中由三部分组成 Git 仓库就是那个.git 目录&#xff0c;其中存放的是我们所提交的文档索引内容&#xff0c;Git 可基于文档索引内容对其所管理的文档进行内容追踪&#xff0c;从而实现文档的版本控…

LeetCode MySQL 1412. 查找成绩处于中游的学生

文章目录1. 题目2. 解题1. 题目 表: Student ------------------------------ | Column Name | Type | ------------------------------ | student_id | int | | student_name | varchar | ------------------------------ student_id 是该表…

LeetCode MySQL 618. 学生地理信息报告(row_number)

文章目录1. 题目2. 解题1. 题目 一所美国大学有来自亚洲、欧洲和美洲的学生&#xff0c;他们的地理信息存放在如下 student 表中。 | name | continent | |--------|-----------| | Jack | America | | Pascal | Europe | | Xi | Asia | | Jane | Americ…

java非必填字段跳过校验,avalon2表单验证,非必填字段在不填写的时候不能通过验证...

avalon2表单验证,非必填字段在不填写的时候不能通过验证代码var vm avalon.define({$id: "validate1",aaa : "",validate: {onError: function(reasons) {reasons.forEach(function(reason) {console.log(reason.getMessage())})},onValidateAll: functio…

jQuery心得5--jQuery深入了解串讲1

1.CSS-DOM 操作 获取和设置元素的样式属性: css()。 获取和设置元素透明度: opacity 属性(css 的一个属性)。 获取和设置元素高度, 宽度: height(), width(). 在设置值时, 若只传递数字, 则默认单位是 px. 如需要使用其他单位则需传递一个字符串, 例如 $(“p:first”).height(“…

LeetCode MySQL 1225. 报告系统状态的连续日期(date_sub + over)

文章目录1. 题目2. 解题1. 题目 Table: Failed ----------------------- | Column Name | Type | ----------------------- | fail_date | date | ----------------------- 该表主键为 fail_date。 该表包含失败任务的天数.Table: Succeeded --------------------…

LeetCode MySQL 1369. 获取最近第二次的活动(over窗口函数)

文章目录1. 题目2. 解题1. 题目 表: UserActivity ------------------------ | Column Name | Type | ------------------------ | username | varchar | | activity | varchar | | startDate | Date | | endDate | Date | -----------------…

侧边导航栏的实现

F:\java\c侧边栏\侧边菜单栏\MySlidingMenu转载于:https://www.cnblogs.com/ct732003684/archive/2013/03/24/2979416.html

LeetCode MySQL 569. 员工薪水中位数(over窗口函数)

文章目录1. 题目2. 解题1. 题目 Employee 表包含所有员工。Employee 表有三列&#xff1a;员工Id&#xff0c;公司名和薪水。 ------------------------- |Id | Company | Salary | ------------------------- |1 | A | 2341 | |2 | A | 341 …

【IEnumerable】扩展方法的使用 C#

直接进入主题吧... IEnumerable : 公开枚举数&#xff0c;该枚举数支持在非泛型集合上进行简单迭代。 好吧&#xff0c;迭代&#xff0c;我就理解成循环&#xff0c;这些名词真晦涩&#xff0c;没意思 今天看的是 Using Extension Methods &#xff0c;使用"扩展方法…

LeetCode MySQL 571. 给定数字的频率查询中位数

文章目录1. 题目2. 解题1. 题目 Numbers 表保存数字的值及其频率。 ----------------------- | Number | Frequency | -----------------------| | 0 | 7 | | 1 | 1 | | 2 | 3 | | 3 | 1 | -------…

LeetCode 632. 最小区间(排序+滑动窗口)

文章目录1. 题目2. 解题1. 题目 你有 k 个升序排列的整数数组。 找到一个最小区间&#xff0c;使得 k 个列表中的每个列表至少有一个数包含在其中。 我们定义如果 b-a < d-c 或者在 b-a d-c 时 a < c&#xff0c;则区间 [a,b] 比 [c,d] 小。 示例 1: 输入:[[4,10,15,…

dz论坛php.ini设置,Discuz!X1.5至3.2论坛Win主机与Linux主机伪静态设置方法

用discuz x1.5至3.2的程序搭建的一个论坛&#xff0c;DZ论坛win主机与linux主机伪静态规则的设置方法&#xff01;Windows主机设置方法&#xff1a;1.建立一个名为 httpd.ini 的文件&#xff0c;可以先在电脑上面新建一个文本&#xff0c;然后将下面的这些代码复制到本文里面&a…

LeetCode MySQL 1194. 锦标赛优胜者

文章目录1. 题目2. 解题1. 题目 Players 玩家表 -------------------- | Column Name | Type | -------------------- | player_id | int | | group_id | int | -------------------- 玩家 ID 是此表的主键。 此表的每一行表示每个玩家的组。Matches 赛事表 -----…

php 管理员表和用户表,求discuz的管理员数据表和用户数据表结构

magicmaster07-23 09:35等级3楼不想装mysql&#xff0c;PHP&#xff0c;还有那种phpadmin只要了解一下用户表结构&#xff0c;用注入删掉一个版主&#xff0c;呵呵discuz是怎么把数据表转成向量的?52juanjuan07-23 09:46等级4楼你可以把它的系统与现在运行的网址给各位去说说。…

LeetCode MySQL 1097. 游戏玩法分析 V

文章目录1. 题目2. 解题1. 题目 Activity 活动记录表 ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | ---------------------…

PCA主成分分析

首先可以先阅读这一篇文档。 http://wenku.baidu.com/view/4df2c1d276a20029bd642d76.html 基本的算法和原理在上面的文档内已经写得很详细了&#xff0c;总结一下PCA的数学模型吧&#xff1a; 第一种求法&#xff1a; 易知A是对称阵&#xff0c;所以可以对角化 因为P是要求出来…