美文网首页
iOS高阶算法3:情侣牵手(Swift语言实现)

iOS高阶算法3:情侣牵手(Swift语言实现)

作者: 小呀小苹果呀 | 来源:发表于2019-07-09 10:21 被阅读0次
    image.png
    class Solution {
        
        //思路:首先用一个字典记录数组元素的下标,然后以步长为2的方式遍历执行:查找数组元素的couple的下标,该下标与index+1不相等则交换位置
        //输入用例:[0,2,1,3]   [3, 2, 0, 1]  [3, 5, 2, 0, 4, 1]
        
        func minSwapsCouples(_ row: [Int]) -> Int {
            var rowDic = [Int : Int]()
            
            var rowCopy = row
            
            var swapCount = 0
            
            for i in 0..<row.count {
                rowDic[row[i]] = i
            }
            
            var couple = 0
            
            for j in stride(from: 0, to: row.count, by: 2) {
                //相邻方式:奇数偶数 或 偶数奇数
                couple = rowCopy[j] % 2 == 0 ? rowCopy[j] + 1 : rowCopy[j] - 1
                //couple的下标与j+1不相等则交换位置
                if let n = rowDic[couple], n != (j + 1) {
                    rowDic[rowCopy[n]] = j + 1
                    rowDic[rowCopy[j + 1]] = n
                    rowCopy.swapAt(n, j + 1)
                    swapCount += 1
                }
            }
            return swapCount
        }
    }
    
    

    相关文章

      网友评论

          本文标题:iOS高阶算法3:情侣牵手(Swift语言实现)

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