范围内的重叠数字
范围内的重叠数字
通过javascript、Python和C确定重叠
✨重叠定义:
重叠是指方程组中的一种特殊情况,其中两条线实际上直接位于彼此之上。
还记得在数学课上学习维恩图吗?要知道,两个圆圈是重叠绘制的,所以它们在中间共享一个空间。
**因此,我们可以说,如果我们有两块东西,一块覆盖另一块的一部分,那么它们就是重叠的。
** 现在,让我们解决一个我在技术面试中遇到的关于这个主题的问题:
✨ 问题:
您将获得一个数组 **5**
数字。这 前 2 个数字代表一个范围 , 和 接下来的两个数字代表另一个范围 .
数组中的最终数字是 **X**
.
我们计划的目标 是确定两个范围是否至少重叠 **X**
数字。
例如,在数组中 **[5、12、3、8、3]**
范围 **5**
至 **12**
**** 是 [5、6、7、8、9、10、11、12]。
和范围 **3**
至 **8**
是 [ 3、4、5、6、7、8] .
它被重叠 **4**
数字,所以我们的程序应该返回 真的 .
**等等,为什么?
** 原因,示例数组中的最终数字 **X = 3**
.
虽然我们发现我们的范围重叠 **4**
数字 **(5, 6, 7, 8)**
,以及给定数组中的最终数字 **X < 4**
.这就是为什么我们的程序应该返回 **真的**
.
让我们解决问题……
方法一:使用循环解决这个问题
函数重叠范围(arr){
让计数器 = 0;
for (var i = arr[0]; i < arr[1]; i++) {
if (i >= arr[2] && i <= arr[3]) {
计数器++;
}
}
返回(计数器> = arr [4])?真假;
};
常量结果 = OverlappingRanges([5, 12, 3, 8, 3]);
控制台日志(结果)
**//输出:真**
解释:
**步骤1:** 在 counter 变量中,我们跟踪有多少数字重叠
**第2步:** 循环遍历范围之一
**第 3 步:** 检查第一个范围内的数字是否存在于第二个范围内
**第4步:** 检查重叠的数字是否等于或大于
比数组中的最后一个数字(我们定义为 x)
而已!
方法2:让我们不使用循环来解决问题:
假设给定的数组是 [8、20、6、15、6] .我们的函数应该返回 真的 也是。见下图:
功能重叠(arr){ 让 range1 = listOfNumbers(arr[0], arr[1]);
让 range2 = listOfNumbers(arr[2], arr[3]);
让重叠计数 = 0; if(range1[0] >= range2[0] && range1[0] <= range2[1]){
重叠计数= range2[1] - range1[0] + 1;
} 别的 {
重叠计数 = range1[1] - range2[0] + 1;
}
if(overlappingCount >= arr[4]){
返回真;
}
}
函数 listOfNumbers(a, b){ 让开始=一个; 让结束 = b; 如果(a > b){
开始 = b;
结束=一个;
}
返回[a,b];
}; 常量 arr = [4, 10, 2, 6, 3];
console.log(重叠(arr)) **//输出:真**
Python代码示例:
def 重叠(arr):
计数 = 0
对于范围内的 i(arr[0],arr[1]+1):
对于范围内的 j(arr[2],arr[3]+1):
如果我 == j:
计数 += 1
如果计数 >= arr[4]:
返回真
别的:
返回假
res = 重叠([8, 20, 6, 15, 6])
打印(分辨率)
#输出:真
C代码示例:
#包括<stdio.h>
int 重叠(int arr[]){ 整数计数 = 0;
for (int i = arr[0]; i <= arr[1]; i++){
for (int j = arr[2]; j <= arr[3]; j++){ 如果(我 == j){
计数 += 1;
}
}
}
如果(计数 >= arr[4]){
返回 1;
}
别的 {
返回0;
}
};
//运行这个程序,看看输出
好了,今天就到这里。 我希望您发现本教程对您有所帮助。
本教程有任何问题吗?
我不介意你让我知道...
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明