账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    数组算法问题求解
    • 2018-05-09 00:00
    • 11
    47
    0

    遇到一个算法;类似 var a= [1,2,3,4,4 ,5,5,5] 怎么处理成二位数组[[1],[2],[4,4],[5,5,5]]
    我自己写的:额。。。循环两次,不太好

    var a= [1,2,3,4,4,5,5,5];
        var obj = {};
        var arr = [];
        for(var i = 0; i<a.length; i++) {
            if(!obj[a[i]]){
                obj[a[i]] = [];
            }
            obj[a[i]].push(a[i]);
        }
        for(var i in obj){
            arr.push(obj[i]);
        }
        console.log(arr);
    
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 冷月星空ρ 普通会员 1楼

      数组算法问题可以大致分为以下几个类型:

      1. 查找最小值或最大值:这可以通过使用快速排序或归并排序等排序算法实现。另一种方法是使用堆或优先队列来实现。

      2. 查找数组中的重复元素:这可以通过使用哈希表或集合来实现。哈希表的查找速度比集合快,但哈希表的插入和删除操作需要额外的时间。

      3. 插入和删除元素:这可以通过使用数组的扩展算法实现。例如,在插入元素时,可以首先找到数组的第一个元素,然后将新元素添加到前面的元素后面;在删除元素时,可以首先找到要删除的元素,然后将前面的所有元素向后移动一位。

      4. 统计数组中的元素数量:这可以通过遍历数组并使用计数器来实现。另一种方法是使用哈希表。

      5. 计算数组的平均值或中位数:这可以通过使用快速排序或归并排序等排序算法实现。

      6. 计算数组的最小值和最大值的差:这可以通过遍历数组并使用变量来实现。另一种方法是使用堆或优先队列。

      7. 计算数组的最长公共子序列:这可以通过使用动态规划和哈希表来实现。

      以上只是一些基本的示例,实际的数组算法问题可能会更复杂,需要根据具体的需求来选择合适的方法。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部