c语言大数倍数,leetcode-1346(检查整数及其两倍数是否存在)--C语言实现
求:
给你一个整数数组 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
解:
首先最直观的想到暴力法,时间复杂度是O(N^2)
bool
checkIfExist(
int
* arr,
int
arrSize){
int
i,j;
for
(i=
0
;i
for
(j=i+
1
;j
if
(arr[i]==arr[j]*
2
|| arr[j]==arr[i]*
2
)
return
true
;
}
return
false
;
}
对暴力法进行改进,很自然的想到使用哈希表以空间换时间的策略,通过判断哈希表对应位置上的索引关系,能够知道是否存在符合题意的一对数。
注意这里有2个细节:
1、数组可能包含数组,而使用数组实现哈希表,索引不能是负数,但是因为题目给出了数的范围,我们对这个区间统一加上1000,就可以保证索引的有效性。
2、0要单独处理,否则会因为0的存在导致错误的结果。
bool
checkIfExist(
int
* arr,
int
arrSize){
int
hashMap[
2001
] = {
0
};
int
countZero =
0
;
int
i;
for
(i=
0
;i
if
(arr[i]==
0
) ++countZero;
if
(countZero>=
2
)
return
true
;
hashMap[
1000
+arr[i]] =
1
;
}
for
(i=
0
;i
if
(arr[i]!=
0
&& arr[i]%
2
==
0
&& hashMap[
1000
+arr[i]/
2
]==
1
)
return
true
;
return
false
;
}
c语言大数倍数,leetcode-1346(检查整数及其两倍数是否存在)--C语言实现相关推荐
- LeetCode 1346. 检查整数及其两倍数是否存在(哈希)
1. 题目 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更正式地,检查是否存在两个下标 i 和 j 满足: i != j 0 ...
- 1346. 检查整数及其两倍数是否存在
1346. 检查整数及其两倍数是否存在https://leetcode.cn/problems/check-if-n-and-its-double-exist/ 难度简单55 给你一个整数数组 arr ...
- 1346. 检查整数及其两倍数是否存在 golang
1346. 检查整数及其两倍数是否存在 1346. 检查整数及其两倍数是否存在 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更 ...
- [leetcode周赛]1346. 检查整数及其两倍数是否存在
class Solution {public:bool checkIfExist(vector<int>& arr) {sort(arr.begin(),arr.end());fo ...
- python怎么判断倍数_检查整数及其两倍数是否存在 python3
1346. 检查整数及其两倍数是否存在 难度简单23收藏分享切换为英文关注反馈 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更 ...
- LeetCode 1346、检查整数及其两倍数是否存在
1346.检查整数及其两倍数是否存在 1)题目描述 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更正式地,检查是否存在两个下标 ...
- Leetcode 1346:检查整数及其两倍数是否存在(超详细的解法!!!)
给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更正式地,检查是否存在两个下标 i 和 j 满足: i != j 0 <= ...
- LeetCode简单题之检查整数及其两倍数是否存在
题目 给你一个整数数组 arr,请你检查是否存在两个整数 N 和 M,满足 N 是 M 的两倍(即,N = 2 * M). 更正式地,检查是否存在两个下标 i 和 j 满足: i != j 0 < ...
- leetcode 第1题【两数之和】C语言
leetcode 第1题[两数之和] 今天开始刷 leetcode 了,坚持每天做 因为不太会编程,只是想记录下来,若有错误,欢迎指正. /*** Note: The returned array m ...
最新文章
- C语言之头文件,static与const关键字
- [数据库] Navicat for Oracle基本用法图文介绍
- 【JS 逆向百例】网洛者反爬练习平台第一题:JS 混淆加密,反 Hook 操作
- Servlet超详解+流程图
- win7 mysql 未响应_求助啊 WIN7下安装mysql出问题 老是说未响应~!!
- dsp2812 pmsm foc之中断初始化
- PSF 点扩展函数 (from WikiPedia)
- 超低插损的新材料射频开关(PCM RF switch)的新进展
- 使用TensorFlow搭建智能开发系统,自动生成App UI代码
- 用html中表单标签实现QQ登录注册静态页面
- 机器人学笔记之——空间描述和变换:姿态的其他描述方法
- 在C语言aceg什么意思,#8203;给定关系模式R,U={A,B,C},F={AB-C,C-B}.关系R(1) ,且分别有(2)给定关系模式R,U={A,B,C},F={AB-C,C-B}...
- 有什么软件可以测试电脑的网速,电脑测网速软件哪个好 轻松测试网络性能
- 如何批量调整图片亮度和对比度?
- 地铁线路项目需求简要分析
- 亲测好用的视频后期合成软件:Nuke 13(完美支持12系统和m1)
- 在docker中编译tor 源码
- storm 实战及实例讲解(二)
- 基于图像的多视角立体视觉三维重建(一)——对极几何模型与极线校正原理
- Robust image stitching with multiple registrations之浅见
热门文章
- java值栈_Struts2 中的值栈是什么?
- C语言以字符串的形式读写文件
- 【OpenCV 例程200篇】100. 自适应局部降噪滤波器
- 后盾网php多少钱_商标转让做公证花多少钱-购店网
- html table设置行高_字号与行高
- 以VMware workstation15.5.2pro为例如何新建虚拟机,安装镜像文件(最新)
- Python档案袋( 命令行操作 及 Os与Shutil文件操作补充 )
- 前端通信:ajax设计方案(五)--- 集成promise规范,更优雅的书写代码(改迭代已作废,移步迭代10)...
- 大数据笔记11:MapReduce的运行流程
- web.config中httpRunTime的属性