# foldLeft and foldRight, a Scala language concept

Last updated

A 'fold' allows you to perform the equivalent of a for-loop, but with a lot less code.

Last updated

A 'fold' allows you to perform the equivalent of a for-loop, but with a lot less code.

Scala is used at many places, such as AirBnB, Apple, Bank of America, BBC, Barclays, Capital One, Citibank, Coursera, eBay, JP Morgan, LinkedIn, Morgan Stanley, Netflix, Singapore Exchange, Twitter.

Fully unit-tested, with explanations and relevant concepts; new algorithms published about once a week.

- Compute the length of longest valid parentheses
- Monitor success rate of a process that may fail
- Find combinations adding up to N (unique)
- Find k closest elements to a value in a sorted Array
- Make a queue using stacks (Lists in Scala)
- Single-elimination tournament tree
- Quick Sort sorting algorithm in pure immutable Scala
- Find minimum missing positive number in a sequence
- Compute a Roman numeral for an Integer, and vice-versa
- Matching parentheses algorithm with foldLeft and a state machine
- Traverse a tree Breadth-First, immutably
- Read a matrix as a spiral
- Remove duplicates from a sorted list (state machine)
- Merge Sort: stack-safe, tail-recursive, in pure immutable Scala, N-way
- Longest increasing sub-sequence length
- Binary search a generic Array
- Merge Sort: in pure immutable Scala
- Make a queue using Maps
- Is an Array a permutation?
- Count number of contiguous countries by colors
- Add numbers without using addition (plus sign)
- Tic Tac Toe MinMax solve
- Run-length encoding (RLE) Encoder
- Print Alphabet Diamond
- Balanced parentheses algorithm with tail-call recursion optimisation
- Reverse a String's words efficiently
- Count number of changes (manipulations) needed to make an anagram with foldLeft and a MultiSet
- Counting inversions of a sequence (array) using a Merge Sort
- Check if an array is a palindrome
- Compute nth row of Pascal's triangle
- Run-length encoding (RLE) Decoder
- Check if a number is a palindrome
- In a range of numbers, count the numbers divisible by a specific integer
- Find the index of a substring ('indexOf')
- Reshape a matrix
- Closest pair of coordinates in a 2D plane
- Find the contiguous slice with the minimum average
- Compute maximum sum of subarray (Kadane's algorithm)
- Binary search in a rotated sorted array
- Rotate Array right in pure-functional Scala - using an unusual immutable efficient approach
- Length of the longest common substring
- Tic Tac Toe board check
- Find an unpaired number in an array
- Check if a String is a palindrome
- Count binary gap size of a number using tail recursion
- Remove duplicates from a sorted list (Sliding)
- Find sub-array with the maximum sum
- Find the minimum absolute difference of two partitions
- Find maximum potential profit from an array of stock price
- Fibonacci in purely functional immutable Scala
- Fizz Buzz in purely functional immutable Scala
- Find combinations adding up to N (non-unique)
- Remove duplicates from an unsorted List
- Count factors/divisors of an integer
- Compute single-digit sum of digits
- Traverse a tree Depth-First
- Reverse bits of an integer
- QuickSelect Selection Algorithm (kth smallest item/order statistic)
- Rotate a matrix by 90 degrees clockwise

To save you going through various tutorials, we cherry-picked the most useful Scala concepts in a consistent form.

- Class Inside Class
- Class Inside Def
- Collect
- Def Inside Def
- Drop, Take, dropRight, takeRight
- foldLeft and foldRight
- For-comprehension
- Lazy List
- Option Type
- Ordering
- Partial Function
- Pattern Matching
- Range
- scanLeft and scanRight
- Sliding / Sliding Window
- Stack Safety
- State machine
- Tail Recursion
- Type Class
- View
- Zip