美文网首页
剑指 Offer II 075. 数组相对排序

剑指 Offer II 075. 数组相对排序

作者: 邦_ | 来源:发表于2022-06-24 11:00 被阅读0次

    这道题说实话。我看了好久才明白它的意思。。
    按照数组二的顺序进行排序。。
    比方说数组一是[2,3,1,3,2,4,6,7,9,2,19]
    数组二是[2,1,4,3,9,6]
    那么按照数组二排序的话 所有的2排在前边。然后是所有的1 所有的4 ...
    最后二里面没有包含的按照升序排在最后边。。

    截屏2022-06-24 11.00.00.png
    func relativeSortArray(_ arr1: [Int], _ arr2: [Int]) -> [Int] {
                 
            var map = Dictionary<Int,Int>()
            var res = arr1
            for num in arr1 {
                if let count = map[num] {
                     map[num] = count + 1
                    
                }else {
                    map[num] = 1
                }
                
            }
            //用来记录插入元素位置
            var index = 0
         
            for num in arr2 {
                
                if let count = map[num] {
                    
                    for _ in 0..<count {
                        res[index] = num
                        if let mapCount = map[num] {
                            
                            map[num] = mapCount - 1
                            if mapCount - 1 == 0 {
                                map.removeValue(forKey: num)
                            }
    
                        }
                        index += 1
                    }
                                    
                }
    
            }
            
            let keyArray = map.keys.sorted()
            for keyNum in keyArray {
                //剩余元素的个数
                let keyCount =  map[keyNum]!
                for _ in 0..<keyCount {
                    res[index] = keyNum
                    index += 1
    
                }
    
            }
            return res
        }
    
    
    
    
    
    
    

    相关文章

      网友评论

          本文标题:剑指 Offer II 075. 数组相对排序

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