Related Articles

Related Articles

Find final value if we double after every successful search in array
  • Difficulty Level : Basic
  • Last Updated : 21 Jan, 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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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.

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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.
?>

chevron_right


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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


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.




My Personal Notes arrow_drop_up
Recommended Articles
Page :