2
A
回答
2
分步:
- 获取的第一要素。
循环所有数组元素并计算它们不与 匹配的第一个元素的次数。
- 如果所有的元素匹配,你有你的答案(都是平等的)。
- 如果只有一个元素不匹配,则表示您的答案(其中一个 不同)。
- 如果某些元素不匹配,则说明您的答案(超过 则不同)。
在没有元素匹配的情况下,获取第二个元素并重复 测试。
- 如果只有一个元素不匹配,再次只有一个不同(第一个)。
- 否则,不同元素的数量大于1。
4
使用地图。
Map<X, Integer> map = new HashMap<X, Integer>(); // where X is the array type
Integer ct;
for(X item : array){
ct = map.get(item);
if(ct == 0) ct = Integer.valueOf(1);
else ct = Integer.valueOf(ct.intValue()+1);
map.put(item, ct);
}
// now test if map.values() consists of Integer.valueOf(1) and (optionally)
// another positive integer (thx aioobe)
1
我会选择的方法是:
迭代所有元素,并把它们放在一个地图(HashMap的Java中)。
关键是元素,值是外观的计数器。
例如:您的阵列:AAAAB
地图:
A - > 4 乙 - > 1
您已经构建之后,地图很容易找到,如果你的阵列匹配标准。
- 该地图必须只有2个元素(map.size())。
- 完全元素中的一个具有计数器1
如果您认为增加的地图在固定时间内发生了,你就会有2N的整体复杂性(遍历数组和遍历图)。
2
我想出了这招:-)
public static boolean allButOneSame(int[] arr) {
if (arr.length <= 1)
return arr.length == 1;
Arrays.sort(arr);
return arr[0] != arr[arr.length-1] &&
(arr[0] == arr[arr.length-2] ||
arr[1] == arr[arr.length-1]);
}
(可比数值,如整数凭借虽然!)
0
这里的另一种方法:
public static <Item> boolean allButOneSame(List<Item> items) {
// Make sure we have 2 different elements (or 1 element in total)
if (new HashSet<Item>(items).size() != 2)
return items.size() == 1;
// Create a temporary copy
List<Item> tmp = new ArrayList<Item>(items);
// Remove all elements equal to the first one.
tmp.removeAll(Collections.singleton(items.get(0)));
// Check the number of remaining elements.
return tmp.size() == 1 || tmp.size() == items.size() - 1;
}
它需要一个List
作为输入。如果以数组开头,则使用Arrays.asList
。
0
1
- 迭代阵列,由第一元件,并且x + 1个元素,其中x是比较2,3,4,... array.length()
- 如果比较失败则递增计数器
如果((计数器== 0)||((计数器> 1)& &(计数器!= array.length-1)))然后condi灰不满足
计数器= 0表示,所有都是相同的元件
计数器= array.length-1装置的排序顺序例如:4,5,5,5,5,5,5
复杂性 - >时间:O(n),没有额外的空间,除了计数器
相关问题
- 1. 检查数组中的所有元素是否都是相同的值
- 2. 检查数组中的所有元素是否具有相同的值Swift
- 3. 查找几个数组的元素是否具有相同的坐标
- 4. 检查一个数组的所有元素是否与另一个数组的所有元素具有相同的值
- 5. 确定是否所有元素的数组是素数
- 6. 我有一个数组,但只输出第一个元素
- 7. 如何检测元素是否已滚出,但只有一次?
- 8. 测试一个向量的所有元素是否相等
- 9. 只选择一个元素,不是所有的元素 - jQuery
- 10. 在一个数组中加上所有相同的元素
- 11. 你怎么知道一个数组是否具有相同的连续元素?
- 12. Java:查找一个数组是否至少有3个元素具有相同的值
- 13. 如何找出数组中的一个元素是否具有虚假的属性值,以及是否所有元素都具有使用Linq的真值
- 14. 如何找出所有数组元素是否匹配一些条件?
- 15. 如何简单检查数组中的所有元素是否相同?
- 16. 如何在matlab中检查数组中的所有元素是否相同?
- 17. 找出某个特定ID的所有元素是否具有相同的区域
- 18. 如何检查列表中的所有元素是否相同?
- 19. Ruby - 数组A是否包含数组B的所有元素
- 20. 期望所有的数组元素是同一类
- 21. 数组是否有一个元素等于元素?
- 22. 找出元素是否有声明值
- 23. 测试两个二叉搜索树是否具有相同的一组元素?
- 24. 检查元素是否只有一个子元素
- 25. 如何检查两个数组中是否有相同的元素?
- 26. 检查两个数组是否具有相同顺序的元素
- 27. Java:如何确定一个数组是否有两个相等的元素?
- 28. 影响所有,但是,一个元素与jQuery的每个()
- 29. 如何检查列中的所有元素是否具有相同的文本?
- 30. 比较两个数组,两个数组之间是否有共同的元素?
所以java **或** C?他们是不同的语言,所以你最好选择一个。 –
哦,并且注意C也不是** C++。 –