There is an infinite stream of daily temperatures, design a data structure which allows to perform operations such as:
Example (using numbers instead of Date for simplicity):
// addTemperature(1, 10)
// getLatestTemperature() returns 10
// getMaxTemperature() returns 10
// addTemperature(2, 20)
// getLatestTemperature() returns 20
// getMaxTemperature() returns 20
// addTemperature(3, 15)
// getLatestTemperature() returns 15
// getMaxTemperature() returns 20
// updateTemperature(2, 11)
// getLatestTemperature() returns 15
// getMaxTemperature() returns 15
// removeTemperature(3)
// getLatestTemperature() returns 11
// getMaxTemperature() returns 11