力扣1346(java&python)-检查整数及其两倍数是否存在(简单)
题目:
给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M)。
更正式地,检查是否存在两个下标 i 和 j 满足:
- i != j
- 0 <= i, j < arr.length
- arr[i] == 2 * arr[j]
示例 1:
输入:arr = [10,2,5,3]
输出:true
解释:N = 10 是 M = 5 的两倍,即 10 = 2 * 5 。
示例 2:
输入:arr = [7,1,14,11]
输出:true
解释:N = 14 是 M = 7 的两倍,即 14 = 2 * 7 。
示例 3:
输入:arr = [3,1,7,11]
输出:false
解释:在该情况下不存在 N 和 M 满足 N = 2 * M 。
提示:
- 2 <= arr.length <= 500
- -10^3 <= arr[i] <= 10^3
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/check-if-n-and-its-double-exist
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
一看明白题意是返回true或者flase,就想到可以把数组进行排序变成一个有序的数组,然后再使用二分查找,考虑到查找倍数为2的数,本题的解题关键在于,如何确定最初的查找范围
如 [-4,-3,-2,0,1,4] 若满足条件的为负数,则查找区间应在该数的左半区域
如 [0,1,3,5,10,11] 若满足条件的为正数,则查找区间应在该数的右半区域
java代码:
1 class Solution {
2 public boolean checkIfExist(int[] arr) {
3 Arrays.sort(arr);
4 int n = arr.length;
5 for (int i = 0; i < n; i++){
6 int left = 0, right = n - 1;
7 if (arr[i] >= 0){
8 left = i + 1;
9 }else {
10 right = i - 1;
11 }
12 while (left <= right){
13 int mid = left + (right - left) / 2;
14 if (arr[mid] < arr[i] * 2){
15 left = mid + 1;
16 }else if (arr[mid] > arr[i] * 2){
17 right = mid - 1;
18 }else{
19 return true;
20 }
21 }
22 }
23 return false;
24 }
25 }

python3代码:
1 class Solution:
2 def checkIfExist(self, arr: List[int]) -> bool:
3 n = len(arr)
4 arr.sort()
5 for i in range(n):
6 left, right = 0 , n - 1
7 if arr[i] < 0:
8 right = i - 1
9 else:
10 left = i + 1
11 while left <= right:
12 mid = left + (right - left) // 2
13 if arr[mid] > arr[i] * 2:
14 right = mid - 1
15 elif arr[mid] < arr[i] * 2:
16 left = mid + 1
17 else:
18 return True
19 return False

力扣1346(java&python)-检查整数及其两倍数是否存在(简单)的更多相关文章
- 【力扣】剑指 Offer 25. 合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的. 示例1: 输入:1->2->4, 1->3->4输出:1->1->2->3-> ...
- 力扣(LeetCode)7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: 120 输出: ...
- leetcode 力扣第七题: 整数反转
哇,发现会写算法的人好牛逼啊,而且好像大多写算法的都不用PHP,哈哈哈哈哈,在领扣里面都没有php这个选项,真尴尬 从几个月之前就想刷题了,但是不会啊,很懵逼啊,昨天搜了一下答案,好像才打开了我这个写 ...
- 力扣992.K个不同整数的子数组-C语言实现
题目 原题链接 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续.不一定独立的子数组为好子数组. (例如,[1,2,3,1,2] 中有 3 个不同的整数: ...
- java 对象转整数,两个整数相除转百分数
public class MathUtil { public static void main(String[] args) { System.out.println(toPercent(1,3)); ...
- Java执行groovy脚本的两种方式
记录Java执行groovy脚本的两种方式,简单粗暴: 一种是通过脚本引擎ScriptEngine提供的eval(String)方法执行脚本内容:一种是执行groovy脚本: 二者都通过Invocab ...
- LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现
题目描述: python实现 Search in Rotated Sorted Array 搜索旋转排序数组 中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1 ...
- LeetCode(力扣)——Search in Rotated Sorted Array2 搜索旋转排序数组 python实现
题目描述: python实现 Search in Rotated Sorted Array2 搜索旋转排序数组 中文: 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0 ...
- 力扣 ——Linked List Cycle II(环形链表 II) python实现
题目描述: 中文: 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). ...
- 力扣——Linked List Cycle(环形链表) python实现
题目描述: 中文: 给定一个链表,判断链表中是否有环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始). 如果 pos 是 -1,则在该链表中没有环. ...
随机推荐
- SpringBoot+内置Tomcat配置,参数调优,最大并发量,最大连接数
最近在研究这块的信息,记录下一些大神的文章: SpringBoot 最大连接数及最大并发数是多少???https://blog.csdn.net/weixin_44421461/article/det ...
- K8S通过Yaml部署Nacos,注册服务报错503
报错信息: ErrCode:503, ErrMsg:server is DOWN now .detailed error message: Optional[Distro protocol XXXX] ...
- 人人都是艺术家!AI工具Doodly让潦草手绘变精美画作
AI绘画界太卷了,一天一个新东西,不久前刚给大家介绍了可以一秒出图的SDXL-Turbo,今天来聊一聊另一位重磅选手Doodly 有用过Stable Diffuison的小伙伴都知道,想要生成一张高质 ...
- nginx进阶-3(32-34天)学习笔记
nginx进阶-3(33-34天)学习笔记 知识回顾 1. nginx部署单机网站 2.nginx部署多个网站 3.nginx访问方式 4.nginx 安全 5.nginx加密访问 实战 00---n ...
- python 图片转文字小工具
应群友要求,要做一个图片转文字的格式,因为有些人的简历中只有一张图片要提取他里面的文字就不好办了. 于是就有了下面这个小工具: 功能:选择要识别的图片后,识别出来后存到.txt文本中. 实现原理,基于 ...
- AtCoder Beginner Contest 347
AT link Problem A and B 略. Problem C 按照模 \(a + b\) 分类,记录最大值和最小值,如果差值小于等于假期时间即可,否则还需要判断按照 \(d_i = D_i ...
- 算法学习笔记【5】| ST表
ST表 Part 1:ST表解决的问题是什么 ST 表可以用来解决RMQ(区间最值问题)等可重复贡献的问题. ST表基于倍增的思想来实现. Part 2:ST表的实现 ST表通过 O(nlogn)& ...
- DM数据库金融行业案例(水贴一波)
最近没遇到啥有意思的案例,都是些很简单的案例,但是又好久没写过博客了,决定水一波帖子,保持更新. 今天这个是任总老婆小王同学提供的金融SQL案例,难是不难,但是远程的时候网络卡得要命, 心累. 慢 ...
- 5 JavaScript变量提升
5 变量提升 看以下代码, 或多或少会有些问题的. function fn(){ console.log(name); var name = '大马猴'; } fn() 发现问题了么. 这么写代码, ...
- #线性dp#CF1110D Jongmah
题目 分析 考虑三个 \((i,i+1,i+2)\) 可以用 \((i,i,i)\) 和 \((i+1,i+1,i+1)\) 和 \((i+2,i+2,i+2)\) 代替, 所以这样的三元组本质上最多 ...