Open In App

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

Improve
Improve
Like Article
Like
Save
Share
Report

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.

Implementation:

C++




// C++ 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)
{
  
    bool exist = true;
      
    // Search for k. After every successful
    // search, double k and change exist to true
    // and search again for k from the start of array
      
    while(exist){
          
        exist = false;
          
        for (int i = 0; i < n; i++) {
              
            // Check is a[i] is equal to k
            if (a[i] == k){
                k *= 2;
                exist = true;
                break;
            }
        }
          
    }
  
    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)
  {
  
    boolean exist = true;
  
    // Search for k. After every successful
    // search, double k and change exist to true
    // and search again for k from the start of array
  
    while(exist){
  
      exist = false;
  
      for (int i = 0; i < n; i++) {
  
        // Check is a[i] is equal to k
        if (arr[i] == k){
          k *= 2;
          exist = true;
          break;
        }
      }
  
    }
  
    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 contributed by Aarti_Rathi


C#




using System;
/*
  C# program to find value if we double
  the value after every successful search
*/
public class GFG {
    // Function to Find the value of k
    static int findValue(int[] a, int n, int k)
    {
  
        bool exist = true;
  
        // Search for k. After every successful
        // search, double k and change exist to true
        // and search again for k from the start of array
  
        while (exist) {
  
            exist = false;
  
            for (int i = 0; i < n; i++) {
  
                // Check is a[i] is equal to k
                if (a[i] == k) {
                    k *= 2;
                    exist = true;
                    break;
                }
            }
        }
  
        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 contributed by Aarti_Rathi


Python3




#  Python program to find value if we double
#  the value after every successful search
  
# Function to Find the value of k
def findValue(a, n, k):
  
    exist = True
  
    while exist:
        #  Search for k. After every successful
        #  search, double k and change exist to true
        # and search again for k from the start of array
        exist = False
  
        for i in range(n):
            # Check is a[i] is equal to k
            if a[i] == k:
                k *= 2
                exist = True
                break
  
    return k
  
  
# Driver's Code
arr = [2, 3, 4, 10, 8, 1]
k = 2
n = len(arr)
print(findValue(arr, n, k))


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)
  {
  
    var exist = true;
    // Search for k. After every successful
    // search, double k and change exist to true
    // and search again for k from the start of array
    while(exist){
          
        exist = false;
          
        for(let i = 0; i < n; i++){
            // Check is a[i] is equal to k
            if(arr[i] == k) {
                k *= 2;
                exist = true;
                break;
            }
        }
          
    }
  
    return k;
  }  
   
// Driver code
  
  let arr = [ 2, 3, 4, 10, 8, 1 ], k = 2;
  let n = arr.length;
  document.write(findValue(arr, n, k));
  
// This code is contributed by muditj148.
</script>


Output

16

Time Complexity : O(n^2) 

Auxiliary Space: O(1)

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. 

Implementation:

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 contributed 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 contributed 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 contributed 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) 

Auxiliary Space: O(1)

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.

Implementation:

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


Java




/*package whatever //do not write package name here */
import java.io.*;
import java.util.*;
class GFG {
  static int findValue(int[] a,int n,int k){
  
    // Unordered set
    HashSet<Integer> m = new HashSet<Integer>();
  
    // Iterate from 0 to n - 1
    for(int i=0;i<n;i++){
      m.add(a[i]);
    }
  
    while (m.contains(k)){
      k = k * 2;
    }
  
    return k;
  }
  
  // Drivers code
  public static void main(String args[]){
    int[] arr = { 2, 3, 4, 10, 8, 1 };
    int k = 2;
    int n = arr.length;
    System.out.println(findValue(arr, n, k));
  }
}
  
// This code is contributed by shinjanpatra.


Python3




# Python program for the above approach
  
# Function to find the value
def findValue(a, n, k):
      
    # Unordered Map
    m = set()
    
    # Iterate from 0 to n - 1
    for i in range(n):
        m.add(a[i])
  
    while (k in m):
        k = k * 2
  
    return k
  
# Driver's Code 
arr, k = [ 2, 3, 4, 10, 8, 1 ], 2
n = len(arr)
print(findValue(arr, n, k))
  
# This code is contributed by shinjanpatra


C#




// C# program for the above approach
using System;
using System.Collections.Generic;
  
class GFG {
    static int findValue(int[] a, int n, int k)
    {
        // Unordered set
        HashSet<int> m = new HashSet<int>();
  
        // Iterate from 0 to n - 1
        for (int i = 0; i < n; i++) {
            m.Add(a[i]);
        }
        while (m.Contains(k)) {
            k = k * 2;
        }
        return k;
    }
    // Drivers code
    public static void Main(string[] args)
    {
        int[] arr = { 2, 3, 4, 10, 8, 1 };
        int k = 2;
        int n = arr.Length;
        Console.WriteLine(findValue(arr, n, k));
    }
}
  
// This code is contributed by Tapesh(tapeshdua420)


Javascript




<script>
  
// JavaScript program for the above approach
  
// Function to find the value
function findValue(a, n, k)
{
      
    // Unordered Map
    let m = new Set();
    
    // Iterate from 0 to n - 1
    for (let i = 0; i < n; i++)
        m.add(a[i]);
  
    while (m.has(k))
        k = k * 2;
  
    return k;
}
  
// Driver's Code
  
let arr = [ 2, 3, 4, 10, 8, 1 ], k = 2;
let n = arr.length;
document.write(findValue(arr, n, k));
  
// This code is contributed by shinjanpatra
  
</script>


Output

16

Time Complexity: O(n)
Space Complexity: O(n)

Reference: “https://www.geeksforgeeks.org/flipkart-interview-experience-set-35-on-campus-for-sde-1/”



Last Updated : 19 Sep, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads