Hey guys, Leo here.

Today we’ll continue the series Algorithms, the Final Frontier. Always remember folks, this is ONE of many possible solutions for the problem. The challenge is here: The Challenge

Let’s go!

The problem: Compare and update the inventory stored in a 2D array against a second 2D array of a fresh delivery. E.G. update inventory([[21, “Bowling Ball”], [2, “Dirty Sock”], [1, “Hair Pin”], [5, “Microphone”]], [[2, “Hair Pin”], [3, “Half-Eaten Apple”], [67, “Bowling Ball”], [7, “Toothpaste”]]) should return an array with a length of 6. Solution: I divide this problem into two parts:

1. Create a compiled inventory
2. Sort the compiled inventory

For the first part, you can just create a dictionary for that like:

```var a1 = [[2,"cafe"],[8,"water"],[2,"bola"],[2,"futebolball"],[2,"solarium"],[2,"pool"]]
var a2 = [[8,"cafe"],[3,"water"],[2,"futebolball"],[2,"solarium"],[2,"pool"]]

var dict : [String:Int] = [:]

a1.append(contentsOf: a2)

for row in a1 {
let itemNumber = row[0] as! Int
let itemName = row[1] as! String
if dict[itemName] != nil {
dict[itemName] = dict[itemName]! + itemNumber
} else {
dict[itemName] = itemNumber
}
}
```

and for the second part just a little FP here:

If you're a mid/senior iOS developer looking to improve your skills and salary level, join this 100% free online crash course. It's available only until September 29th, so click to get it now!

```print(dict.lazy.sorted { a1, a2 -> Bool in
a1.key < a2.key
}.map { itemName, value -> [Any] in
[value,itemName]
})
```

## Continue Algorithm Studying

If you like the solution for this inventory problem, you will probably like the “special palindrome problem”. There we use a two-pointer technique to traverse the array simultaneously from both sides.

Functional programming is a good technique to be familiar in algorithms because you can leverage your code using premade functions. For example in this solution for a “shopping cart” problem we use two functional operations to solve the whole problem.

That’s all my people, I hope you liked reading this article as much as I enjoyed writing it. If you want to support this blog you can Buy Me a Coffee or just leave a comment saying hello. You can also sponsor posts and I’m open to `freelance writing!` You can reach me on LinkedIn or Twitter and send me an e-mail through the contact page.

Thanks for reading and… That’s all folks.

Image Credit: Wikiart