`
deng131
  • 浏览: 673564 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

数组中找出小于6且离数字6最近元素

阅读更多
面试中遇到一个算法题:在数组中找出小于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
分享到:
评论

相关推荐

    Labview应用技术 使用数组函数寻找数组中负数个数(拓展).docx

    3. 将筛选后的数组连接到“Element Count”函数,它会返回数组中的元素数量,即负数的个数。 4. 在前面板上添加一个数值显示控件,将计数结果连接到该控件,展示负数的个数。 在程序框图中,这些操作可以通过连线和...

    找出数组3个数字相加为0的组合

    在本问题中,我们面临的是一个经典的算法挑战:找出数组中三个数字的组合,使得它们的和为零。这个题目属于计算机科学中的“三数之和”问题,通常在算法设计和面试中出现,旨在考察候选人的逻辑思维和解决复杂问题的...

    数组中重复的数字1

    问题要求在一个已知范围内的整数数组中,找出任意一个重复的数字,而不需要知道重复的次数。 给定的示例输入为 `[2, 3, 1, 0, 2, 5, 3]`,期望的输出是 `2` 或 `3`,因为这两个数字在数组中出现了不止一次。 提供...

    编写数组函数程序

    数组在内存中是连续存储的,这使得通过索引访问数组元素变得非常高效。 程序的核心功能是实现折半查找(也称为二分查找),这是一种在有序数组中查找特定元素的搜索算法。其基本思想是将数组分为两半,然后比较中间...

    在排序数组中查找数字1

    这个问题要求我们找出一个特定的数字在给定的有序数组中出现的次数。以下是解决问题的关键知识点: 1. **二分查找(Binary Search)**: - 二分查找是一种在有序数组中查找特定元素的搜索算法。它通过不断将搜索...

    Python查找数组中数值和下标相等的元素示例【二分查找】

    请编程实现一个函数,找出数组中任意一个数值等于其下标的元素,例如在数组【-3,-1,1,3,5】中,3和他的下标相等。 采用二分查找:如果数组中的数字小于下标,由于下标是-1的递减数列,但是数组中的元素差值大于...

    查找第二大和第二小的数值,并查找数组中重复次数最高的数

    接下来,我们需要找出数组中出现次数最多的元素。C++标准库提供了`std::unordered_map`或`std::map`容器来实现这个功能。我们可以遍历数组,用哈希表记录每个元素出现的次数,然后找出出现次数最多的那个。 ```cpp ...

    数组练习题Subject:数组

    在 Subject011 中,我们需要定义一个 N*N 二维数组,从键盘上输入值,找出每行中最大值组成一个一维数组并输出。这可以通过使用 Java 中的二维数组索引和赋值操作来实现。 12. 二维数组最大值和最小值输出 二维...

    c语言数组练习题及答案

    即找出1000以内既是7的倍数但不是11的倍数,或不是7的倍数但却是11的倍数的所有整数,并将它们存入`a[]`数组中。 **解题思路**: - 遍历1到999之间的所有整数。 - 判断每个数是否符合条件。 - 如果符合条件,则将其...

    算法-数组排序 按数组内数字大小排序 取得最大值或最小值.rar

    在排序过程中,我们经常需要找出数组中的最大值和最小值。这些操作在未排序的数组中可能需要遍历整个数组,但在已排序的数组中则可以快速找到。 1. 最大值和最小值查找: - 直接查找:对于未排序数组,从头到尾...

    php求数组全排列,元素所有组合的方法

    在PHP中,数组全排列是指将数组中的所有元素进行所有可能的排列组合。这通常涉及到回溯算法或者基于比较的排序技巧。以下是对标题和描述中提到的PHP数组全排列方法的详细解释: 首先,我们需要一个包含多个元素的...

    Python实现找出数组中第2大数字的方法示例

    在Python编程中,有时我们需要找出数组中的第二大数值。这个任务涉及到对数组的处理,包括排序和遍历等基本操作。本篇文章将详细讲解如何利用Python实现这一功能。 首先,我们来看一个简单的Python函数,用于找出...

    javascript入门笔记

    1、从弹框中,分两次输入两个数字,分别保存在 a 和 b中 2、如果 a 大于 b的话 ,则交换两个数字的位置 使用 短路&&,扩展赋值运算符,位运算 4、条件运算符(三目运算) 单目(一元)运算符 :++,--,! 双目(二元)...

    第 数组C语言程序设计第三电子PPT学习教案.pptx

    在实际编程中,数组常用于存储大量数据,例如在题目描述的场景中,我们需要从键盘接收10个数字,计算它们的平均值,并找出所有小于平均值的数字。这个过程可以通过循环实现,首先累加所有输入的数字,然后除以元素个...

    计算机二级c 题库

    第三题需要找出并累加一个整数的所有因子(除了1和自身)。可以使用一个for循环从2到n-1遍历,对于每个数字检查它是否是n的因子,如果是,就累加到总和中。 4. 多项式计算: 第四题要求计算一个特定的级数和。这...

    如何寻找数组中的第二大数

    在处理数组时,有时我们需要找出数组中的最大值或次大值。这篇文章主要探讨了两种不同的方法来寻找数组中的第二大数。 首先,我们来看第一种方法(方法一)。这种方法通过初始化两个变量,`max` 和 `s_max`,分别...

    1.6 编程基础之一维数组 python版.zip

    5. "13 大整数的因子--9分.py":这可能是找出大整数的因子,利用一维数组存储因子,可能需要优化算法以处理大数。 6. "07 有趣的跳跃.py":可能是一个关于数组元素间跳跃的游戏或者问题,涉及数组索引操作和条件...

    二分查找 杨辉三角 数组便利

    如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且同样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 代码中...

    LeetCode 5344. 有多少小于当前数字的数字(排序)

    给你一个数组 nums,对于其中每个元素 nums[i],请你统计数组中比它小的所有数字的数目。 换而言之,对于每个 nums[i] 你必须计算出有效的 j 的数量,其中 j 满足 j != i 且 nums[j] &lt; nums[i] 。 以数组形式返回...

    JS获取数组最大值、最小值及长度的方法

    在这个过程中,我们使用了遍历数组的技巧和逻辑判断来找出数组中的最大值和最小值。 对于最小值的实现,我们定义了一个名为min的函数。这个函数首先假设数组的第一个元素是最小的,然后通过for循环遍历数组中的其余...

Global site tag (gtag.js) - Google Analytics