Advertisement
HXXXXJ

Schedule task - keep order

Mar 26th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.20 KB | None | 0 0
  1.  
  2. func getSchedule(_ arr: [Int], _ space: Int) -> [Int]{
  3.     guard space > 0 else {
  4.         return arr
  5.     }
  6.     var res = [Int]()
  7.     var p = 0
  8.     var map = [Int: Int]()  // integer, last index
  9.    
  10.    
  11.     while p < arr.count{
  12.         let number = arr[p]
  13.         if let last = map[number]{
  14.             var diff = space - (res.count - last)
  15.             while diff > 0{
  16.                 res.append(-1)
  17.                 diff -= 1
  18.             }
  19.         }
  20.         res.append(arr[p])
  21.         map[number] = res.count
  22.         p += 1
  23.     }
  24.     return res
  25. }
  26.  
  27.  
  28. let arr = [1,1,2,3,2,1]
  29. print(getSchedule(arr, 2))
  30.  
  31. //[1, -1, -1, 1, 2, 3, -1, 2, 1]
  32.  
  33.  
  34. func getSchedule2(_ arr: [Int], _ space: Int) -> Int{
  35.     guard space > 0 else {
  36.         return arr.count
  37.     }
  38.     var count = 0
  39.     var p = 0
  40.     var map = [Int: Int]()  // integer, last index
  41.    
  42.     while p < arr.count{
  43.         let number = arr[p]
  44.         if let last = map[number]{
  45.             if (count - last) < space {
  46.                 count = last + space
  47.             }
  48.         }
  49.         count += 1
  50.         map[number] = count
  51.         p += 1
  52.     }
  53.     return count
  54. }
  55.  
  56.  
  57. let arr2 = [1,1,2,3,2,1]
  58. print(getSchedule2(arr2, 2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement