Beyond the good explanations given here I found the examples from this website quite excellent. I will use the pictures to show the general procedure with the related definitions.
I will leave out what kind of procedure for convolution is used as other have pointed out that the exact convolution is also a tactical decision which depends on the exacts situation.
Given
- $x[n] = \{ 3, -1, 0, 3, 2, 0, 1, 2, 1 \}$
- $h[n] = \{1, -1, 1\}$
- $L = 3$
- $M = |h[x]| = 3$
- $N = L + M - 1 = 3 + 3 - 1 = 5$
Convolution by Overlap-Add
Step 1: creating $x_k[n]$
$x_k[n]$ is now defined like
- ${\displaystyle x_{k}[n]\ \triangleq \ {\begin{cases}x[n+kL],&n=1,2,\ldots ,L\\0,&{\text{otherwise}},\end{cases}}}$
which can visually be presented quite good as:

Step 2: using convolution to get $y_k[n]$
$y_k[n]$ is defined as
- $y_k[n] = x_k[n](n - kL)*h[n]$ (note that t indices are shifted by $n - kL$ to zero for the non zero values)
So the point is that both signals are convolved in some kind of way so that $x_k[n]$ is shifted to start from $0$ again
- In the website from above this is shown quite nicely how this can be achieved by DFT or circular convolution.
- Other answers have pointed out that theoretically any procedure for convolution could be used.
Step 3: creating $y[n]$ using all $y_k[n]$
Now $y[n]$ can be written as
- $y[n]=\sum _{k}y_{k}[n-kL]=\sum _{k}(x_{k}[n-kL]*h[n])=(\sum _{k}x_{k}[n-kL])*h[n]$
- not that using $n-kL$ shifts the $y_k[n]$ so that they start at index $kL$ again.
- Since every $y_k[n]$ is of length $N$ they their overlap of $N-L$ values will be added
which can be presented tabular as

Convolution by Overlap-Save
Step 1: creating $x_k[n]$
First we fill $x[n]$ with $M-1=2$ zero values at the beginning.
Now $x_k$ is defined as
- $\displaystyle x_{k}[n]\ \triangleq {\begin{cases}x[n+kL],&1\leq n\leq L+M-1\\0,&{\textrm {otherwise}}.\end{cases}}$
we get as tabular form for every $x_k$

Step 2: Computing partial values of $y[n]$
Now we can compute every $y_k[n]$ on the fly and the concatenate the result in an array for $y[n]$ without have to do any adding at all, since the first $M-1$ value will overlap.
For a better understanding I will split this in two steps to get a beter overview though both steps are done in one loop for every calculated $y_k[n]$!
Step 2.1: using convolution to get $y_k[n]$
$y_{k}[n]\ \triangleq \ x_{k}[n]*h[n]=\sum _{m=1}^{M}h[m]\cdot x_{k}[n-m]$
So everything said about the convolution in Step 2 from overlap-add applies as well.
Step 2.2: adding the resulting $y_k[n]$ to get $y[n]$
We can define this step as
$\displaystyle y[n]=\sum _{m=1}^{M}h[m]\cdot x_{k}[n-kL-m]\ \ \triangleq \ \ y_{k}[n-kL]$
- So every $x_k[n]$ starts at $kL$ for it's value of $k$ but for the overlapping values just $0$ values are added, since the overlapping stuff is not required!
So in tabular manner this could be seen as:
