<p>Given an array <code>arr</code> of integers, check if there exist two indices <code>i</code> and <code>j</code> such that :</p>

<ul>
	<li><code>i != j</code></li>
	<li><code>0 &lt;= i, j &lt; arr.length</code></li>
	<li><code>arr[i] == 2 * arr[j]</code></li>
</ul>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>

<pre>
<strong>Input:</strong> arr = [10,2,5,3]
<strong>Output:</strong> true
<strong>Explanation:</strong> For i = 0 and j = 2, arr[i] == 10 == 2 * 5 == 2 * arr[j]
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> arr = [3,1,7,11]
<strong>Output:</strong> false
<strong>Explanation:</strong> There is no i and j that satisfy the conditions.
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>2 &lt;= arr.length &lt;= 500</code></li>
	<li><code>-10<sup>3</sup> &lt;= arr[i] &lt;= 10<sup>3</sup></code></li>
</ul>

class Solution:
    def checkIfExist(self, arr: List[int]) -> bool:
        
        #[1,3,4,6,8,10,13,20]
        #[1,]
        
        hash_table = set() # we use this because sets use hash mapping to look up items directly vs lists which use linear time to search for it
        
        i = 0
        while i<len(arr):
            if ((arr[i] * 2 in hash_table) or (arr[i] % 2==0 and arr[i]//2 in hash_table)):
                return True
            hash_table.add(arr[i])
            i+=1
            
        return False
                
        """
class Solution:
    def checkIfExist(self, arr: List[int]) -> bool:
        hash_table = set()  # Use a set for O(1) lookup
        
        for x in arr:
            # Check if 2 * x or x // 2 (if x is even) is already in the set
            if 2 * x in hash_table or (x % 2 == 0 and x // 2 in hash_table):
                return True
            # Add the current element to the set
            hash_table.add(x)
        
        return False
        """
                        
        
        # first sort the arr
        # decrement k as the outter loop continues until it has reached 0
            # target = k 
        # inner while loop iterates until i <= j
        # check if 2 * mid == target
            # IF mid * 2 < target:
                # i = mid+1
            # else 
                # j = mid 
                
        
39