给你一个整数数组 arr,请你检查是否存在两个整数 NM,满足 NM 的两倍(即,N = 2 * M)。

更正式地,检查是否存在两个下标 ij 满足:

  • 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

解题思路

首先不难想到暴力解法,也就是通过两层循环遍历数组,然后进行判断即可。

class Solution:def checkIfExist(self, arr: List[int]) -> bool:for i, l in enumerate(arr):for j, r in enumerate(arr):if i != j and (l == 2 * r or r == 2 * l):return Truereturn False

更优秀的解法就是参看Leetcode 1:两数之和思路,遍历arr的过程中记录哪些数访问过(通过Hash map),然后判断当前元素的两倍或者一半之前有没有出现过即可。

class Solution:def checkIfExist(self, arr: List[int]) -> bool:seen = set()for i in arr:if 2 * i in seen or i % 2 == 0 and i // 2 in seen:return Trueseen.add(i)return False

我将该问题的其他语言版本添加到了我的GitHub Leetcode

如有问题,希望大家指出!!!

Leetcode 1346:检查整数及其两倍数是否存在(超详细的解法!!!)相关推荐

  1. LeetCode 1346. 检查整数及其两倍数是否存在(哈希)

    1. 题目 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更正式地,检查是否存在两个下标 i 和 j 满足: i != j 0 ...

  2. 1346. 检查整数及其两倍数是否存在

    1346. 检查整数及其两倍数是否存在https://leetcode.cn/problems/check-if-n-and-its-double-exist/ 难度简单55 给你一个整数数组 arr ...

  3. 1346. 检查整数及其两倍数是否存在 golang

    1346. 检查整数及其两倍数是否存在 1346. 检查整数及其两倍数是否存在 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更 ...

  4. [leetcode周赛]1346. 检查整数及其两倍数是否存在

    class Solution {public:bool checkIfExist(vector<int>& arr) {sort(arr.begin(),arr.end());fo ...

  5. python怎么判断倍数_检查整数及其两倍数是否存在 python3

    1346. 检查整数及其两倍数是否存在 难度简单23收藏分享切换为英文关注反馈 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更 ...

  6. LeetCode 1346、检查整数及其两倍数是否存在

    1346.检查整数及其两倍数是否存在 1)题目描述 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更正式地,检查是否存在两个下标 ...

  7. LeetCode简单题之检查整数及其两倍数是否存在

    题目 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更正式地,检查是否存在两个下标 i 和 j 满足: i != j 0 < ...

  8. c语言大数倍数,leetcode-1346(检查整数及其两倍数是否存在)--C语言实现

    求: 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更正式地,检查是否存在两个下标 i 和 j 满足: i != j 0 < ...

  9. Leetcode 957:N 天后的牢房(超详细的解法!!!)

    8 间牢房排成一排,每间牢房不是有人住就是空着. 每天,无论牢房是被占用或空置,都会根据以下规则进行更改: 如果一间牢房的两个相邻的房间都被占用或都是空的,那么该牢房就会被占用. 否则,它就会被空置. ...

最新文章

  1. Windows Phone 7 WebBrowser 中文乱码问题
  2. 改善代码设计 —— 总结篇(Summary)
  3. ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
  4. C#与U3D中字符串尾0
  5. 呵护宝宝健康成长 飞鹤携手第四范式天枢打造精准智能推荐
  6. C语言中在常数后面加U、L、F的功能
  7. 基于Java+jsp+servlet的养老院管理系统设计和实现
  8. Mac OS X 显示和隐藏文件
  9. 2011 ACM 0和1思想
  10. 使用Python 3.5/3.6监听本机任意窗口中的按键操作
  11. 【入门书籍】新手入门机器学习,强烈推荐这几本书籍
  12. 微软.Net离线语音识别
  13. 《艺技回忆录》 ——观《达芬奇的人生密码》有感
  14. 浙江大学2019年数学分析考研试题
  15. (转)用4年多时间, 带领微软重登全球市值第一宝座, 纳德拉是如何做到的?
  16. 透视与3D(3D立方体)
  17. SAGA GIS使用教程
  18. 怎么给图片加上红圈,红框,红箭头标重点等?还有添加文字
  19. 计算机组成原理:真值,原码,补码,反码,移码
  20. 你知道企业级SSD与消费级SSD的区别吗?

热门文章

  1. 推荐 5 个IDEA插件,效能飞起
  2. 分析一个个人网站的运营状况(www.kindle114.com)
  3. 玩转 Apple 快捷指令,打卡、切图、查快递、扫码付款等!
  4. Vue CLl 出现 Invalid Host header
  5. JAVA春之梦理发店管理计算机毕业设计Mybatis+系统+数据库+调试部署
  6. 一键淘宝应用模板,轻松打包店铺网址,一键生成APP
  7. Android 图标适配
  8. Walden单词中频率统计
  9. 如何在MySQL官网下载jar包附8.0jar包百度云地址
  10. c语言里兹法解二阶微分方程,[2018年最新整理]FE-Ch变分原理与里兹法.ppt