Skip to content
Related Articles

Related Articles

Improve Article

Find final value if we double after every successful search in array

  • Difficulty Level : Basic
  • Last Updated : 07 Apr, 2021

Given an array and an integer k, traverse the array and if the element in array is k, double the value of k and continue traversal. In the end return value of k.
Examples: 

Input : arr[] = { 2, 3, 4, 10, 8, 1 }, k = 2
Output: 16
Explanation:
First k = 2 is found, then we search for 4
which is also found, then we search for 8
which is also found, then we search for 16.
 
Input : arr[] = { 2, 4, 5, 6, 7 }, k = 3
Output: 3

Method – 1: (Brute-force)

1) Traverse each element of an array if arr[i] == k then k = 2 * k.  
2) Repeat the same process for the max value of k.
3) At last Return the value of k.

Method – 2: (Sort and the search)

1) Sort the array
2) Then you can just search for the element in one loop because we are sure that k*2 would be after k in this array. Therefore,  just multiply the value of k there in the loop only. 



C++




// CPP program to find value if we double
// the value after every successful search
#include <bits/stdc++.h>
using namespace std;
 
// Function to Find the value of k
int findValue(int a[], int n, int k)
{
 
    // Sort the array
    sort(a, a + n);
 
    // Search for k. After every successful
    // search, double k.
    for (int i = 0; i < n; i++) {
         
        // Check is a[i] is equal to k
        if (a[i] == k)
            k *= 2;
    }
 
    return k;
}
 
// Driver's Code
int main()
{
    int arr[] = { 2, 3, 4, 10, 8, 1 }, k = 2;
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << findValue(arr, n, k);
    return 0;
}

Java




// Java program to find value
// if we double  the value after
// every successful search
 
class GFG {
    // Function to Find the value of k
    static int findValue(int arr[], int n, int k)
    {
 
        // Search for k. After every successful
        // search, double k.
        for (int i = 0; i < n; i++)
            if (arr[i] == k)
                k *= 2;
 
        return k;
    }
 
    // Driver Code
    public static void main(String[] args)
    {
        int arr[] = { 2, 3, 4, 10, 8, 1 }, k = 2;
        int n = arr.length;
        System.out.print(findValue(arr, n, k));
    }
}
// This code is contriubted by
// Smitha Dinesh Semwal

Python3




# Python program to find
# value if we double
# the value after every
# successful search
 
# Function to Find the value of k
 
 
def findValue(arr, n, k):
 
    # Search for k.
    # After every successful
    # search, double k.
    for i in range(n):
        if (arr[i] == k):
            k = k * 2
 
    return k
 
# Driver's Code
 
 
arr = [2, 3, 4, 10, 8, 1]
k = 2
n = len(arr)
 
print(findValue(arr, n, k))
 
# This code is contributed
# by Anant Agarwal.

C#




// C# program to find value
// if we double the value after
// every successful search
using System;
 
class GFG {
 
    // Function to Find the value of k
    static int findValue(int[] arr, int n, int k)
    {
 
        // Search for k. After every successful
        // search, double k.
        for (int i = 0; i < n; i++)
            if (arr[i] == k)
                k *= 2;
 
        return k;
    }
 
    // Driver Code
    public static void Main()
    {
        int[] arr = { 2, 3, 4, 10, 8, 1 };
        int k = 2;
        int n = arr.Length;
 
        Console.WriteLine(findValue(arr, n, k));
    }
}
 
// This code is contriubted by vt_m.

PHP




<?php
// PHP program to find
// value if we double
// the value after every
// successful search
 
// Function to Find
// the value of k
function findValue($arr, $n, $k)
{
 
    // Search for k. After every
    // successful search, double k.
    for ($i = 0; $i < $n; $i++)
        if ($arr[$i] == $k)
        $k *= 2;
     
    return $k;
}
 
// Driver Code
$arr = array(2, 3, 4, 10, 8, 1);
$k = 2;
$n = count($arr);
echo findValue($arr, $n, $k);
 
// This code is contriubted by anuj_67.
?>

Javascript




<script>
 
// JavaScript program to find value
// if we double  the value after
// every successful search
 
    // Function to Find the value of k
    function findValue(arr, n, k)
    {
  
        // Search for k. After every successful
        // search, double k.
        for (let i = 0; i < n; i++)
            if (arr[i] == k)
                k *= 2;
  
        return k;
    
  
// Driver code
 
        let arr = [ 2, 3, 4, 10, 8, 1 ], k = 2;
        let n = arr.length;
        document.write(findValue(arr, n, k));
 
</script>

Output:

16

Time Complexity : O(nlogn) 
Method – 3: (Hashing)

1) Put all elements in hashmap.

2) Search if k is in hashmap, If it is then multiply the value by k or return value of k.

C++




// CPP program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find the value
int findValue(int a[], int n, int k)
{
     
    // Unordered Map
    unordered_set<int> m;
   
    // Iterate from 0 to n - 1
    for (int i = 0; i < n; i++)
        m.insert(a[i]);
 
    while (m.find(k) != m.end())
        k = k * 2;
 
    return k;
}
 
// Driver's Code
int main()
{
    int arr[] = { 2, 3, 4, 10, 8, 1 }, k = 2;
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << findValue(arr, n, k);
    return 0;
}

Time Complexity: O(n)

Space Complexity: O(n)

 

?list=PLqM7alHXFySEQDk2MDfbwEdjd2svVJH9p
Reference:href=”https://www.geeksforgeeks.org/flipkart-interview-experience-set-35-on-campus-for-sde-1/”
 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :