使用python在整型数组/列表中查找唯一数字

kmb7vmvb  于 2023-01-29  发布在  Python
关注(0)|答案(7)|浏览(316)

给定大小为N的整数数组/列表(ARR)。其中N等于[2 M + 1]。现在,在给定的数组/列表中,“M”个数字出现两次,而一个数字只出现一次。查找并返回在数组/列表中唯一的数字。
注:根据给定条件,唯一元素始终存在于数组/列表中。
我已经使用WHILE循环完成了这个问题,但是当我尝试使用FOR循环时,它不起作用
而且,我已经看到了这类问题的一些代码,但因为我是一个学习者,只做了一些基本的python,所以还不知道复杂度(O^N)。
请帮助和提前感谢
WHILE循环代码:

def find_unique(li,n):
    for i in range(n):
        j = 0
        while(j < n):
            if i != j:
                if li[i] == li[j]:
                    break
            j = j + 1
        if j == n:
            return li[i]
n = 7
li = [2,3,1,6,3,6,2]
ele = find_unique(li,n)
print(ele)

FOR循环代码:

def find_unique(li,n):
    for i in range(n):
        for j in range(0,n):
            if i == j:
                continue
            if(li[i] == li[j] and j ==n):
                    return li[i]
        

n = 7
li = [2,3,1,6,3,6,2]
ele = find_unique(li,n)
print(ele)
k4emjkb1

k4emjkb11#

def unique(arr,N):
    ans=0
    for i in range(N):
        ans=ans^arr[i]
    return ans
jq6vz3qz

jq6vz3qz2#

我只是替换了一些代码

def find_unique(li,n):
    for i in range(n):
        for j in range(0,n):
            if i != j:
                if li[i] == li[j]:
                    break
            j = j + 1
        if j == n:
            return li[i]
n = 7
li = [2,3,1,6,3,6,2]
ele = find_unique(li,n)
print(ele)
xwbd5t1u

xwbd5t1u3#

from collections import Counter

li = [2, 3, 1, 6, 3, 6, 2]
print([key for key, val in Counter(li).items() if val == 1])

# [1]
qco9c6ql

qco9c6ql4#

from collections import Counter
def find_unique(li,n):
    a = Counter(li).most_common()
    return a[len(a)-1][0]    
n = 7
li = [2,3,1,6,3,6,2]
ele = find_unique(li,n)
print(ele)
dhxwm5r4

dhxwm5r45#

由于这是一个非常特殊的情况-所有项目重复两次,只有一次例外。您可以使用此属性完成一个简单的一行程序

find_unique = lambda li, n: 2*sum(set(li)) - sum(li)

一旦你定义了函数-现在就使用它

n = 7
li = [2,3,1,6,3,6,2]
ele = find_unique(li, n)
print(ele)
rlcwz9us

rlcwz9us6#

JAVA代码:
公共类解决方案{

public static int findUnique(int[] arr){
    
    int n = arr.length;
    int similar = arr[0]; //first element of array is stored as similar
    //now compare similar with every element of array
    for(int i=1; i<=n-1; i++)
    {
        similar = similar ^ arr[i];
        //XOR operation 1^1 || 0 ^0 = 0
        //XOR operation 1^0 || 0^1= 1
        
        //therefore, similar ^ similar = 0
        //similar ^ unique  = unique
        //similar takes the value of unique after XOR
    }
    
    return similar; //unique element is returned using similar named variable
}

}

bvn4nwqk

bvn4nwqk7#

验证码:

def find_unique(li,n):
    unique_numbers = list(set(li))
    for i in unique_numbers:
        if li.count(i) == 1:
            return i
    return "No number once"

它返回数组中出现一次的个数。大小N不是必需的。Set和Count是列表变量的函数。Set返回数组中唯一的元素,count返回元素在数组中出现的次数。

相关问题