
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Find Removed Term from Arithmetic Sequence in Python
Suppose we have an array called nums holding n-1 arithmetic sequence terms. One element except the first or last element of nums was removed before. We have to find the removed number.
So, if the input is like nums = [5, 7, 11, 13], then the output will be 9 because, the items are following the formula 2i+5, so for i = 2 it will be 2*2 + 5 = 9 which is missing.
To solve this, we will follow these steps −
-
if size of nums is same as 2, then
return floor of (sum of all elements present in nums)/2
-
if nums[0] is same as nums[1], then/p>
return nums[0]
lower := nums[0]
upper := last element of nums
interval := floor of (upper - lower) / size of nums
pointer := floor of size of nums / 2
left := 0
right := size of nums - 1
-
while left is not same as right, do
-
if nums[pointer] is not same as nums[0] + interval * pointer, then
-
if nums[pointer - 1] is same as nums[0] + interval *(pointer - 1) , then
return nums[0] + interval * pointer
-
otherwise,
right := pointer
pointer :=floor of(left + right) / 2
-
-
otherwise,
-
if right - left is same as 1, then
pointer := right
-
otherwise,
left := pointer
pointer := floor of(left + right) / 2
-
-
Example
Let us see the following implementation to get better understanding
def solve(nums): if len(nums) == 2: return sum(nums) // 2 if nums[0] == nums[1]: return nums[0] lower = nums[0] upper = nums[-1] interval = (upper - lower) // len(nums) pointer = len(nums) // 2 left = 0 right = len(nums) - 1 while left != right: if nums[pointer] != nums[0] + interval * pointer: if nums[pointer - 1] == nums[0] + interval * (pointer -1): return nums[0] + interval * pointer else: right = pointer pointer = (left + right) // 2 else: if right - left == 1: pointer = right else: left = pointer pointer = (left + right) // 2 nums = [5, 7, 11, 13] print(solve(nums))
Input
[5, 7, 11, 13]
Output
9