当前位置: 首页 > 面试题库 >

获取数组的最频繁值

劳仲渊
2023-03-14
问题内容

我有一个数字数组,我想知道该数组中哪个数字最常见。数组有时有5-6个整数,有时有10-12个,有时甚至更多-
数组中的整数也可以不同。因此,我需要一个可以与数组的不同长度和值一起使用的函数

一个例子:

myArray = [0, 0, 0, 1, 1]

另一个例子:

myArray = [4, 4, 4, 3, 3, 3, 4, 6, 6, 5, 5, 2]

现在,我正在寻找一个给出0(在第一个示例中)的函数Integer,因为它在此数组中是3倍,而数组中的另一个整数(1)在数组中仅是2倍。或第二个例子是4。

看起来很简单,但是我找不到解决方案。在网上找到了一些示例,其中的解决方案是使用字典或简单的解决方案-但我似乎无法在Swift 3中使用它…

但是,我没有找到适合我的解决方案。有人知道如何获取整数数组中最频繁的整数?


问题答案:
let myArray = [4, 4, 4, 3, 3, 3, 4, 6, 6, 5, 5, 2]

// Create dictionary to map value to count   
var counts = [Int: Int]()

// Count the values with using forEach    
myArray.forEach { counts[$0] = (counts[$0] ?? 0) + 1 }

// Find the most frequent value and its count with max(by:)    
if let (value, count) = counts.max(by: {$0.1 < $1.1}) {
    print("\(value) occurs \(count) times")
}

输出:

4 occurs 4 times

这是一个函数:

func mostFrequent(array: [Int]) -> (value: Int, count: Int)? {
    var counts = [Int: Int]()

    array.forEach { counts[$0] = (counts[$0] ?? 0) + 1 }

    if let (value, count) = counts.max(by: {$0.1 < $1.1}) {
        return (value, count)
    }

    // array was empty
    return nil
}

if let result = mostFrequent(array: [1, 3, 2, 1, 1, 4, 5]) {
    print("\(result.value) occurs \(result.count) times")    
}
1 occurs 3 times

Swift 4更新:

Swift
4引入reduce(into:_:)了数组查找的默认值,并允许您在一条有效的行中生成频率。我们也可以使其通用,并使其适用于以下任何类型Hashable

func mostFrequent<T: Hashable>(array: [T]) -> (value: T, count: Int)? {

    let counts = array.reduce(into: [:]) { $0[$1, default: 0] += 1 }

    if let (value, count) = counts.max(by: { $0.1 < $1.1 }) {
        return (value, count)
    }

    // array was empty
    return nil
}

if let result = mostFrequent(array: ["a", "b", "a", "c", "a", "b"]) {
    print("\(result.value) occurs \(result.count) times")
}
a occurs 3 times


 类似资料:
  • 问题内容: 我有一个表Orders(id_trip,id_order),表Trip(id_hotel,id_bus,id_type_of_trip)和表Hotel(id_hotel,name)。 我想在表Orders中获得最常入住的酒店的名称。 问题答案: 分布中的“最常出现的值”是统计学中的一个不同概念,带有一个技术名称。它称为发行版的MODE。Oracle具有此功能。https://docs.

  • 所以,问题是,我有一个由30个随机重复的数字组成的列表,我必须找到最频繁的数字以及重复的次数。 例如:列表是,从这个列表中,我希望显示的结果是11、4次7、4次。 我一直在努力,但我似乎迷路了,我不能清楚地找出一种方法,超越了制作列表和为列表中的i写作:

  • 我最近把我的应用上传到了谷歌Playstore。我使用错误报告器跟踪崩溃。应用程序工作正常,但经常出现HttpHostConnectException。在进行每次网络通话之前,我都会检查互联网连接。造成这一例外的原因还有其他原因吗?如何避免? 附言:在测试/调试我的应用程序时,我从来没有遇到过这个异常。

  • 问题内容: 如何在SQL表的给定列中找到最频繁的值? 例如,对于该表,它应该返回,因为它是最频繁的值: 问题答案: 替换和。如果要查看列的最常用值,请增加。

  • 可能重复: 查找字符串中最长的重复序列 我正在解决一个问题,我需要找到重复最多的模式。 为了简单和方便,请考虑这个字符串: 重复次数最多的序列(例如,最初考虑字符串长度大于3个字符)是“Lorem Ipsum”。“Lorem”和“Ipsum”当然也重复相同的次数,但如果它们重复相同的次数,则较长的字符串优先于较短的字符串。 什么样的算法可以有效地找到这种模式,最好是在Python中?

  • 本文向大家介绍C#获取数组中最大最小值的方法,包括了C#获取数组中最大最小值的方法的使用技巧和注意事项,需要的朋友参考一下 根据下面函数获取数组中最大最小值即可。调用时候直接传数组范围一个float类型的变量