比如给680,区间是676-680,
给681,区间是681-685,
给682,区间是681-685
给687,区间是686-680
比如给680,区间是676-680,
给681,区间是681-685,
给682,区间是681-685
给687,区间是686-680
首先,你的最后一个区间似乎写错了,因为686-680
不是一个有效的区间(结束值小于起始值)。我假设你想写的是686-690
或者类似的其他有效区间。
下面是一个简单的算法,它接受一个数值和一系列区间,并返回该数值落在哪个区间内。这里我假设区间是连续且不重叠的,并且每个区间的起始值都小于或等于其结束值。
这个算法使用一个简单的线性搜索来遍历所有的区间,直到找到一个包含给定数值的区间。注意,这个算法的时间复杂度是O(n),其中n是区间的数量。如果区间数量很大,可能需要考虑使用更高效的搜索算法或数据结构,比如二分搜索树或平衡二叉搜索树。
以下是Python代码实现:
def find_interval(number, intervals):
for interval in intervals:
start, end = interval
if start <= number <= end:
return interval
return None # 如果找不到匹配的区间,返回None
# 示例区间
intervals = [(676, 680), (681, 685), (686, 690)] # 我假设你最后一个区间是686-690
# 测试
print(find_interval(680, intervals)) # 输出: (676, 680)
print(find_interval(681, intervals)) # 输出: (681, 685)
print(find_interval(682, intervals)) # 输出: (681, 685)
print(find_interval(687, intervals)) # 输出: (686, 690)
请注意,这个算法假设区间列表是按升序排列的,即每个区间的起始值都大于或等于前一个区间的结束值。如果区间列表没有排序,那么你可能需要在搜索之前先对它们进行排序。
function getRange(n: number) {
const max = Math.ceil(n / 5) * 5
return [max - 4, max]
}
console.log(getRange(680)) // [676, 680]
console.log(getRange(681)) // [681, 685]
console.log(getRange(682)) // [681, 685]
console.log(getRange(687)) // [686, 690]
function getRange(num) {
const span = 5;
const start = Math.floor((num - 1) / span) * span + 1;
const end = start + span - 1;
return [start, end];
}
// 测试
console.log(getRange(680)); // 输出: [676, 680]
console.log(getRange(681)); // 输出: [681, 685]
console.log(getRange(682)); // 输出: [681, 685]
console.log(getRange(687)); // 输出: [686, 690]
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决