A.4.1 Introduction to Algorithm Problems

# Learning Objectives

By the end of this lesson, you should:
• be familiar with the basic format of algorithm problems
• be familiar with the solutions to basic algorithm problems
• understand how algo challenge sites like Leetcode and Hacker Rank work and how to use them

# Introduction

Algorithm questions are a subset of programming in that the question that is asked is usually one-dimensional. It has a right and wrong answer, and a preferable and less preferable way to solve the problem. This constrained problem space is a more "pure" form of programming without any system engineering considerations or users.
In order to have a specific, testable solution algorithm questions must be formulated in a precise math problem-like language. Reading the question and understanding the phrasing may be one of the main challenges.
We'll begin by introducing the concept of algorithm questions and work through some simple examples.

# Exercises

Solve each exercise by writing a function that satisfies the requirements.

# Pre-Class

## Fizz Buzz

Fizz buzz is the classic programmer screening test.
Write a function `fizzbuzz` that takes an integer n as a parameter.
Print out n lines of integers counting up from 1, except:
• If the line number is divisible by 3 print "fizz"
• If the line number is divisible by 5 print "buzz"
• If the line number is divisible by both 3 and 5 print "fizzbuzz"
1
fizzbuzz(5)
Copied!
Expected output:
1
1
2
2
3
fizz
4
4
5
buzz
Copied!

## Reverse a String

Write a function `reverse` that takes a string as a parameter. The function returns the string with it's characters in reverse order.
1
result = reverse("hello")
Copied!
Expected output in `result`:
1
"olleh"
Copied!

## Maximum in List

Write a function `maximum` that takes in a array of integers as a parameter and returns the largest number in the list.
1
result = maximum([1,2,3,999,1])
Copied!
Expected output in `result`:
1
999
Copied!

## Minimum in List

Write a function `minimum` that takes in a array of integers as a parameter and returns the smallest number in the list.
1
result = minimum([2,3,9,10,3])
Copied!
Expected output in `result`:
1
2
Copied!

## Remainder

Write a function `remain` that takes in two integer parameters and, without using the modulus operator, return an integer remainder of dividing two numbers.
1
result = remain(10,6)
Copied!
Expected output in `result`:
1
4
Copied!

## Unique Values

Write a function that takes in an array as a parameter and return an array without any duplicate values in it.
1
result = unique_vals([1,1,1,1,2])
Copied!
Expected output in `result`:
1
[1,2]
Copied!

# Part 1

### Hacker Rank

We'll mostly be using leetcode, but to begin we'll solve the most basic questions in Hacker Rank.