Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func getSchedule(_ arr: [Int], _ space: Int) -> [Int]{
- guard space > 0 else {
- return arr
- }
- var res = [Int]()
- var p = 0
- var map = [Int: Int]() // integer, last index
- while p < arr.count{
- let number = arr[p]
- if let last = map[number]{
- var diff = space - (res.count - last)
- while diff > 0{
- res.append(-1)
- diff -= 1
- }
- }
- res.append(arr[p])
- map[number] = res.count
- p += 1
- }
- return res
- }
- let arr = [1,1,2,3,2,1]
- print(getSchedule(arr, 2))
- //[1, -1, -1, 1, 2, 3, -1, 2, 1]
- func getSchedule2(_ arr: [Int], _ space: Int) -> Int{
- guard space > 0 else {
- return arr.count
- }
- var count = 0
- var p = 0
- var map = [Int: Int]() // integer, last index
- while p < arr.count{
- let number = arr[p]
- if let last = map[number]{
- if (count - last) < space {
- count = last + space
- }
- }
- count += 1
- map[number] = count
- p += 1
- }
- return count
- }
- let arr2 = [1,1,2,3,2,1]
- print(getSchedule2(arr2, 2))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement