
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 Last Element After Deleting Every Second Element in Array of N Integers in C++
Consider we have one circular array containing integers from 1 to n. Find the last element, that would remain in the list after deleting every second element starting from first element. If the input is 5, then array will be [1, 2, 3, 4, 5]. Start from 1. After deleting each second element will be like −
1 0 3 4 5 1 0 3 0 5 0 0 3 0 5 0 0 3 0 0
So the element that remains in the list is 3.
We will solve this problem using recursion. Suppose n is even. The numbers 2, 4, 6 will be removed, then we will start from 1 again. So n/2 numbers are removed. And we start as if form 1 in an array of n/2 containing only odd digits 1, 3, 5, … n/2. So we can write the formula like −
solve(n)=2*solve(n/2)-1[when n is even] solve(n)=2*solve(n-1/2)+1[when n is odd]
base condition is solve(1) = 1.
Example
#include<iostream> using namespace std; int deleteSecondElement(int n) { if (n == 1) return 1; if (n % 2 == 0) return 2 * deleteSecondElement(n / 2) - 1; else return 2 * deleteSecondElement(((n - 1) / 2)) + 1; } int main() { int n = 5; cout << "Remaining Element: " << deleteSecondElement(n) << endl; n = 10; cout << "Remaining Element: " << deleteSecondElement(n) << endl; }
Output
Remaining Element: 3 Remaining Element: 5
Advertisements