From 80d52f7f6ff7c329197e4c2c752306daaa362751 Mon Sep 17 00:00:00 2001 From: Jessica Kwok Date: Thu, 18 Mar 2021 13:50:30 -0700 Subject: [PATCH] Add solution using recursion --- DIRECTORY.md | 1 + data_structures/arrays/power_of_two.rb | 61 ++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 data_structures/arrays/power_of_two.rb diff --git a/DIRECTORY.md b/DIRECTORY.md index 3c396ff..976770b 100644 --- a/DIRECTORY.md +++ b/DIRECTORY.md @@ -7,6 +7,7 @@ * [Find All Duplicates In An Array](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/find_all_duplicates_in_an_array.rb) * [Find The Highest Altitude](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/find_the_highest_altitude.rb) * [Get Products Of All Other Elements](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/get_products_of_all_other_elements.rb) + * [Power of Two](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/power_of_two.rb) * [Remove Elements](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/remove_elements.rb) * [Sort Squares Of An Array](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/sort_squares_of_an_array.rb) * [Two Sum](https://github.com/TheAlgorithms/Ruby/blob/master/data_structures/arrays/two_sum.rb) diff --git a/data_structures/arrays/power_of_two.rb b/data_structures/arrays/power_of_two.rb new file mode 100644 index 0000000..5ab09d6 --- /dev/null +++ b/data_structures/arrays/power_of_two.rb @@ -0,0 +1,61 @@ +# Arrays - Power of 2 +# +# Given an integer n, return true if it is a power of two. Otherwise, return false. +# +# An integer n is a power of two, if there exists an integer x such that n == 2^x. +# +# Example 1: +# Input: n = 1 +# Output: true +# Explanation: 2^0 = 1 +# +# Example 2: +# Input: n = 16 +# Output: true +# Explanation: 2^4 = 16 +# +# Example 3: +# Input: n = 3 +# Output: false +# +# Example 4: +# Input: n = 4 +# Output: true +# +# Example 5: +# Input: n = 5 +# Output: false +# +# Constraints: -231 <= n <= 231 - 1 +# @param {Integer} n +# @return {Boolean} +# +# Approach 1: Recursion +# +# Time Complexity: O(1) +# +def is_power_of_two(n) + if n == 1 + return true + elsif n%2 == 0 + is_power_of_two(n/2) + else + return false + end +end + +n = 1 +# Output: true +puts is_power_of_two(n) +n = 16 +# Output: true +puts is_power_of_two(n) +n = 3 +# Output: false +puts is_power_of_two(n) +n = 4 +# Output: true +puts is_power_of_two(n) +n = 5 +# Output: false +puts is_power_of_two(n) \ No newline at end of file