解决方案
分析
时间复杂度
整个题中有个关键的约束条件,就是输入的数据 不会超过 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 }}