Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数组中删除奇数出现值_Java - Fatal编程技术网

Java 从数组中删除奇数出现值

Java 从数组中删除奇数出现值,java,Java,import java.util.*; 类解决方案{ 公共int解决方案(int[]A){ ArrayList B=新的ArrayList(); for(int i=0;i

import java.util.*;
类解决方案{
公共int解决方案(int[]A){
ArrayList B=新的ArrayList();
for(int i=0;i对于(int j=1;j由于嵌套循环,您的代码的运行时间是
O(n^2)
,因此对于大型输入来说太慢

在外循环的每次迭代中,检测并消除一对相等的元素。这意味着该循环将有(n-1)/2次迭代

在每次迭代中,您的内部循环可能会迭代数组的所有剩余元素,因此在最坏的情况下,内部循环的第一次执行将有n次迭代,第二次执行将有n-2次迭代,依此类推

因此,总运行时间受

n + n - 2 + n - 4 + ... + 3 = (n + 3)*(n - 1)/4 = O(n^2)
我建议您使用
HashSet
存储您遇到的元素(如果不存在),如果存在则删除它们。这将需要线性时间(
O(n)

类解决方案{
公共int解决方案(int[]A){
Set=newhashset();
for(int i=0;i
更快的解决方案是使用按位异或(^)

类解决方案{
公共int解决方案(int[]A){
int结果=0;
for(int i=0;i
输入是什么,预期结果与实际结果是什么,为什么会预期结果?您是否调试了代码?(我不会访问外部链接来了解您的问题)我无法获取输入样本,因为它们位于CoDibility站点内部!CoDibility站点只提供我的代码结果t。t,因此,我无法调试。如果我可以调试,我就不会使用堆栈溢出!我在第一行添加代码结果的图片!我无法仅上载图像文件,因此我建议上载图像文件以进行链接缺少
在这里(!set.add(A[i])Thx!!我将使用此代码并向您报告结果,如果您得到满分!!但我想知道我的代码在哪里,为什么wrong@Eran是的,我完全理解你的代码!而且对你很有感觉!所以我相信我的代码中没有错误的代码,只是性能不好。对吗?@Eran thx!我真的非常感谢你!我看到你了到目前为止,我第一次使用你的代码。我可以学习新技能,我可以用你的技能解决另一个问题!thx!thx!我可以理解你的代码!如果按位异或执行相同的数字,结果将变为0。因此,最后将保留没有对的数字!正确吗?这对研究编码世界非常有帮助@신상택 是的,你完全正确,这将是解决你问题的最快方法。
n + n - 2 + n - 4 + ... + 3 = (n + 3)*(n - 1)/4 = O(n^2)
class Solution {
    public int solution(int[] A) {
        Set<Integer> set = new HashSet<Integer>();
        for(int i = 0; i < A.length; i++){
            if (!set.add(A[i])) { // add will return false if A[i] is already in the Set,
                                 // in which case we know we found a pair of equal numbers,
                                 // so we remove that number
                set.remove(A[i]);
            }
        }
        return set.iterator().next(); // according to the problem description, there should 
                                      // be exactly one element left
    }
}