面试中遇到一个算法题:在数组中找出
小于6且离数字6最近元素?
思考方案1:
var a = [1,7,6,9,4], max = '', m = [[],[]];
var index = a.indexOf(6);
for(var i=0, l = a.length; i< l;i++){
if(a[i] < 6){
var inx = index-i;
(inx > 0 ? m[0] : m[1]).push(inx);
}
if(i == l-1) {
if(m[0].pop() == Math.abs(m[1][0]))
max = a[2+m[1][0]];
else{
max = Math.min(m[0].pop() , Math.abs(m[1][0]));
max = a[2+Math.abs(m[1][0])];
}
}
}
max
上述方法还是存在问题,继续优化。
优化方案2:
var a = [2,8,6,8,3], max = '', m = [[],[]];
var index = a.indexOf(6);
for(var i=0, l = a.length; i< l;i++){
if(a[i] < 6){
(index-i > 0 ? m[0] : m[1]).push(i);
}
if(i == l-1) {
m[0] = m[0].pop();
m[1] = m[1][0];
max = (index - m[0] <= m[1] - index) ? a[m[0]] : a[m[1]];
}
}
max
分享到:
相关推荐
3. 将筛选后的数组连接到“Element Count”函数,它会返回数组中的元素数量,即负数的个数。 4. 在前面板上添加一个数值显示控件,将计数结果连接到该控件,展示负数的个数。 在程序框图中,这些操作可以通过连线和...
在本问题中,我们面临的是一个经典的算法挑战:找出数组中三个数字的组合,使得它们的和为零。这个题目属于计算机科学中的“三数之和”问题,通常在算法设计和面试中出现,旨在考察候选人的逻辑思维和解决复杂问题的...
问题要求在一个已知范围内的整数数组中,找出任意一个重复的数字,而不需要知道重复的次数。 给定的示例输入为 `[2, 3, 1, 0, 2, 5, 3]`,期望的输出是 `2` 或 `3`,因为这两个数字在数组中出现了不止一次。 提供...
数组在内存中是连续存储的,这使得通过索引访问数组元素变得非常高效。 程序的核心功能是实现折半查找(也称为二分查找),这是一种在有序数组中查找特定元素的搜索算法。其基本思想是将数组分为两半,然后比较中间...
这个问题要求我们找出一个特定的数字在给定的有序数组中出现的次数。以下是解决问题的关键知识点: 1. **二分查找(Binary Search)**: - 二分查找是一种在有序数组中查找特定元素的搜索算法。它通过不断将搜索...
请编程实现一个函数,找出数组中任意一个数值等于其下标的元素,例如在数组【-3,-1,1,3,5】中,3和他的下标相等。 采用二分查找:如果数组中的数字小于下标,由于下标是-1的递减数列,但是数组中的元素差值大于...
接下来,我们需要找出数组中出现次数最多的元素。C++标准库提供了`std::unordered_map`或`std::map`容器来实现这个功能。我们可以遍历数组,用哈希表记录每个元素出现的次数,然后找出出现次数最多的那个。 ```cpp ...
在 Subject011 中,我们需要定义一个 N*N 二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出。这可以通过使用 Java 中的二维数组索引和赋值操作来实现。 12. 二维数组最大值和最小值输出 二维...
即找出1000以内既是7的倍数但不是11的倍数,或不是7的倍数但却是11的倍数的所有整数,并将它们存入`a[]`数组中。 **解题思路**: - 遍历1到999之间的所有整数。 - 判断每个数是否符合条件。 - 如果符合条件,则将其...
在排序过程中,我们经常需要找出数组中的最大值和最小值。这些操作在未排序的数组中可能需要遍历整个数组,但在已排序的数组中则可以快速找到。 1. 最大值和最小值查找: - 直接查找:对于未排序数组,从头到尾...
在PHP中,数组全排列是指将数组中的所有元素进行所有可能的排列组合。这通常涉及到回溯算法或者基于比较的排序技巧。以下是对标题和描述中提到的PHP数组全排列方法的详细解释: 首先,我们需要一个包含多个元素的...
在Python编程中,有时我们需要找出数组中的第二大数值。这个任务涉及到对数组的处理,包括排序和遍历等基本操作。本篇文章将详细讲解如何利用Python实现这一功能。 首先,我们来看一个简单的Python函数,用于找出...
1、从弹框中,分两次输入两个数字,分别保存在 a 和 b中 2、如果 a 大于 b的话 ,则交换两个数字的位置 使用 短路&&,扩展赋值运算符,位运算 4、条件运算符(三目运算) 单目(一元)运算符 :++,--,! 双目(二元)...
在例4中,一维数组被用于执行筛法(Sieve of Eratosthenes),这是一种用来找出所有小于或等于某个数N内所有素数的方法。数组`a`的每个元素对应一个数,从2开始,将所有素数的倍数标记为0,最终数组中非零的元素就...
第三题需要找出并累加一个整数的所有因子(除了1和自身)。可以使用一个for循环从2到n-1遍历,对于每个数字检查它是否是n的因子,如果是,就累加到总和中。 4. 多项式计算: 第四题要求计算一个特定的级数和。这...
在处理数组时,有时我们需要找出数组中的最大值或次大值。这篇文章主要探讨了两种不同的方法来寻找数组中的第二大数。 首先,我们来看第一种方法(方法一)。这种方法通过初始化两个变量,`max` 和 `s_max`,分别...
5. "13 大整数的因子--9分.py":这可能是找出大整数的因子,利用一维数组存储因子,可能需要优化算法以处理大数。 6. "07 有趣的跳跃.py":可能是一个关于数组元素间跳跃的游戏或者问题,涉及数组索引操作和条件...
如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且同样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 代码中...
给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] < nums[i] 。 以数组形式返回...
在这个过程中,我们使用了遍历数组的技巧和逻辑判断来找出数组中的最大值和最小值。 对于最小值的实现,我们定义了一个名为min的函数。这个函数首先假设数组的第一个元素是最小的,然后通过for循环遍历数组中的其余...