-2
A
回答
0
循環遍歷數組並檢查,如果當前項正好比當前索引多x
,其中x
是數組中的第一個元素。
public boolean hasGaps(long[] array) {
if(array == null || array.length == 0) {
return false;
}
long start = array[0];
for(int i = 0; i < array.length; i++) {
if(array[i] != i + start) {
return true;
}
}
return false;
}
0
public static boolean hasGaps(long[] array) {
if (array == null || array.length == 0) {
return false;
}
if (array[array.length - 1] - array[0] + 1 != array.length) {
return true;
}
for (int i = 1; i < array.length; i++) {
if (array[i] != array[i - 1] + 1) {
return true;
}
}
return false;
}
此方法首先檢查「容易」的情況下,然後迭代陣列檢查更復雜的情況。
2
如果要保證陣列在沒有任何重複的命令,那麼你可以檢查在O(1)
我認爲此代碼應在此特定情況下:)
long[] myarray = generateOrderedNoDuplicateArray();
....
public boolean checkHasGap(long[] array) {
if (array.length == 0) {
return false;
} else {
return array[0] + array.length == array[array.length - 1] + 1;
}
}
0
工作假設數組值是沒有排序,而不是唯一的,你寫的檢查功能:
- 每個值只出現一次
- 最大值 - 最小值+ 1等於陣列長度
在一次迭代中計算最大值和最小值是非常簡單的。至於檢查重複項,您可以使用任何允許您檢查值是否存在的集合。
public static boolean isContiguous(long[] array) {
Set <Long> hashset = new HashSet <Long>();
long min = array[0];
long max = array[0];
for (int i = 0; i < array.length; i++) {
if (hashset.add(array[i]) == false) return false;
if (min > array[i]) min = array[i];
if (max < array[i]) max = array[i];
}
return max - min + 1 == array.length;
}
相關問題
- 1. 如何檢查數組是否爲空?
- 2. 如何檢查數組是否爲空?
- 3. 如何檢查數組是否爲空
- 4. 如何檢查一個字符串數組是否爲空?
- 5. 檢查數組中是否有一個數組是空的
- 6. 檢查數組是否有空元素
- 7. 如何檢查是否數組是空數組中的Javascript
- 8. 如何檢查是否有在數組
- 9. php如何檢查一組數字是否都是正數
- 10. 如何檢查字節數組是否爲空?
- 11. 檢查數組是否有字符串?
- 12. 如何檢查數組中是否有空間?
- 13. 如何檢查數組中的所有元素是否爲空
- 14. 如何檢查具有鍵和值的數組是否爲空
- 15. 如何檢查數組的所有元素是否爲空?
- 16. 檢查是否數組項是空的
- 17. 如何檢查是否一個動態數組爲空
- 18. 如何檢查一個聲明數組是否爲空?
- 19. 如何檢查字節數組是否是有效的圖像?
- 20. 如何檢查數組是否包含空數組?
- 21. 如何檢查數組是否爲空/空?
- 22. 如何檢查對象數組是否爲空/空?
- 23. 我該如何檢查一個可爲空的整數數組是否爲空?
- 24. 檢查數組是否爲空元素
- 25. 檢查兩維數組是否爲空
- 26. 檢查數組是否爲空C++
- 27. 檢查數組是否爲空
- 28. 檢查json數組是否爲空
- 29. 檢查數組值是否爲空
- 30. 檢查數組元素是否爲空
經過陣列並檢查前一個數字是比'電流1'小? – Kayaman
遍歷它們,並檢查i ==元素(+ x)。 (如果重複是可能的,你也需要考慮這些) – Stultuske
元素是否有保證?他們也是獨一無二的? – Pshemo