美文网首页
把数组中相邻并相同的元素分片

把数组中相邻并相同的元素分片

作者: 等这姑娘老在我心里 | 来源:发表于2020-03-22 21:19 被阅读0次
let array: [Int] = [1, 2, 2, 2, 3, 4, 4]
var result: [[Int]] = array.isEmpty ? [] : [[array[0]]]
for (previous, current) in zip(array, array.dropFirst()) {
    print(previous,current)
    if previous == current {
        // 如果相同就加入到同一个数组中
        result[result.endIndex-1].append(current)
    } else {  // 如果不相同 就放到下一个数组中
        result.append([current])
    }
}
result // [[1], [2, 2, 2], [3], [4, 4]]

// 写成通用扩展
extension Array {
    func split(where condition : (Element,Element) -> Bool) ->[[Element]]{
        var result: [[Element]] = self.isEmpty ? [] : [[self[0]]]
        for (previous, current) in zip(self, self.dropFirst()) {
            if condition(previous,current) {
                // f
                result[result.endIndex-1].append(current)
            } else {
                result.append([current])
            }
        }
        return result

    }
}
print(array.split(where:{$0==$1}))
// 简写成
print(array.split(where: ==))
// [[1], [2, 2, 2], [3], [4, 4]]

相关文章

  • 把数组中相邻并相同的元素分片

  • LeetCode 217: 存在重复

    【记录性文章-数组】 代码思路:先排序,再用循环判断数组中相邻元素是否相同。

  • 排序:75.颜色分类(十大排序)

    /** 题目 给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并...

  • iOS 处理数组中相同元素

    如题:从数组中把相同元素放到一个数组中,返回一个二维数组

  • lintCode-facebook

    //给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进行...

  • 数组中相同元素的合并

    数组中相同元素的合并

  • LeetCode习题:寻找峰值

    题目描述:峰值元素是指其值大于左右相邻值的元素。给你一个输入数组 nums,找到峰值元素并返回其索引。数组可能包含...

  • 162. 寻找峰值

    题目: 峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能...

  • java 数组

    java数组:相同类型数据的有序集合 (数组元素的数据类型必须相同) 1. java 创建数组变量 数组中已有元素...

  • 颜色排序

    描述 给定一个包含红,白,蓝且长度为 n 的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红、白、蓝的顺序进...

网友评论

      本文标题:把数组中相邻并相同的元素分片

      本文链接:https://www.haomeiwen.com/subject/qphbyhtx.html