算法题T3 本文最后更新于:3 个月前 输入一个整型数组,找出其中出现次数超过一半以上的元素,输出该元素,例如:输入[1,5,9,5,5,4,8,5,5],输出:5 12345678910111213141516171819202122232425262728293031/* 遍历数组,保存两个值,一个是数组中的数组,一个是次数 当遍历下一个数字时,如果下一个数字和当前保存的数字相同,则次数加1,如果不同则次数减1, 如果次数为0,则需要保存下一个数字,并把次数设为1 由于要找的数字出现的次数比其他所有数字出现的次数之和还要多,所以要找的数字肯定是最后一次把次数设为1的那个数字 */let input: [Int] = [1, 5, 9, 5, 5, 4, 8, 5, 5];print("输入:", input);var n: Int!var c = 0for i in 0 ..< input.count { let e = input[i]; if i == 0 { n = e c = 1 } else { if n == e { c += 1 } else { c -= 1 if c == 0 { n = e c = 1 } } }}print("输出:" + String(n)); 12输入: [1, 5, 9, 9, 9, 9, 9, 9, 9, 9, 9, 5, 5, 4, 8, 5, 5]输出:9 算法 算法 算法题T4 上一篇 算法题T2 下一篇