解决方案

分析

时间复杂度

整个题中有个关键的约束条件,就是输入的数据 不会超过 500 个。

这个提示告诉我们可以使用 时间复杂度较高的算法,因为数量级比较低。

算法

使用简单的双层 for 循环,

比较两个不同的元素 是否是倍数关系

存在就返回 true

否则返回 false

Java 代码

Runtime: 1 ms

Memory Usage: 38.8 MB

Beats 99.53% of java submissions.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
public class Solution { public boolean checkIfExist2(int[] arr) { for (int i = 0; i < arr.length; i++) { for (int j = 0; j < arr.length; j++) { if (i == j) { continue; } if (arr[i] == arr[j] * 2) { return true; } } } return false; }}

Java Script 代码

Runtime: 60 ms

Memory Usage: 34.3 MB

Beats 54.8% of javascript submissions.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
/*** @param {number[]} arr* @return {boolean}*/var checkIfExist = function(arr) { for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { if (i == j) { continue; } if (arr[i] == arr[j] * 2) { return true; } } } return false;};

Python 代码

Runtime: 76 ms

Memory Usage: 12.8 MB

Beats 10.42% of python submissions.

1 2 3 4 5 6 7 8 9 10
class Solution: def checkIfExist(self, arr: List[int]) -> bool: for i in range(len(arr)): for j in range(len(arr)): if i == j: continue if arr[i] == arr[j] * 2: return True else: return False

Go 代码

Runtime: 4 ms

Memory Usage: 3 MB

1 2 3 4 5 6 7 8 9 10 11 12 13
func checkIfExist(arr []int) bool { for i := 0; i < len(arr); i++ { for j := 0; j < len(arr); j++ { if i == j { continue } if arr[i] == arr[j] * 2 { return true } } } return false}

Swift 代码

Runtime: 36 ms

Memory Usage: 21 MB

Beats 40.74% of swift submissions.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
class Solution { func checkIfExist(_ arr: [Int]) -> Bool { for i in 0..<arr.count { for j in 0..<arr.count { guard i != j else { continue } if arr[i] == arr[j] * 2 { return true } } } return false }}

ZZAX 微信公众

文档一更新,立刻告诉你