1346. Check If N and Its Double Exist

Easy

Given an array arr of integers, check if there exist two indices i and j such that :

  • i != j

  • 0 <= i, j < arr.length

  • arr[i] == 2 * arr[j]

Example 1:

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

Example 2:

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

Constraints:

  • 2 <= arr.length <= 500

  • -103 <= arr[i] <= 103

解題

O(n)

使用 map 紀錄出現過的數,並檢查當前數字的兩倍或除以二(偶數情況)的數是否已經出現過。

func checkIfExist(arr []int) bool {
    m := make(map[int]bool)

    for _, num := range arr {
        if (num % 2 == 0 && m[num/2]) || (m[num * 2]) {
            return true
        } 

        m[num] = true
    }

    return false
}

Last updated