---
# System prepended metadata

title: '2001-GHP Cookie Jar: Hash Tables, Dynamic Programming and Algorithmic Thinking'

---

# 2001-GHP Cookie Jar: Hash Tables, Dynamic Programming and Algorithmic Thinking

Put your pending and outstanding questions here 👇
Make the question in H2 tag by using '##'

## How would you look up a value in a collision situation with open addressing? Would you have to store the key value in the memory space? 

## Answer

Great question. Below are a few examples of how'd we go about the open addressing way. 

1. Linear Probing - Like checking hash(key) + 1
2. Quadratic Probing - Same idea as above except we are doing something like probe for i^2
3. Double Hashing - Using another hash function to find another spot


See [here](https://www.geeksforgeeks.org/hashing-set-3-open-addressing/) for more details



## Is a hash table a kind of encryption?

## Answer

Great question:

Hashing has the following main properties
1. The same input will always produce the same output.
2. It should not be possible to go from the output to the input.
3. Any modification of a given input should result in drastic change to the hash.

Encryption: To transform data to keep it a secret from others. Hashing doesn't necessarily do that. The goal here is to make sure specific data can not be shared with unintended people. Only *specific* people can *reverse* the transformation. So, we need a way to get back which is not what hash functions necessarily do.

## Other Resources

A good [video](https://www.youtube.com/watch?v=jH_5ypQggWg&t=873s) on `min jumps`
