当前位置:   article > 正文

一个数组中只有一个数出现了奇数次,找到这个数并打印_生成一个新的数组,里面只有奇数

生成一个新的数组,里面只有奇数
  • 数组中只有一个数只出现了奇数次,找到这个数并打印。
    解法一

    • 统计词频,个数为一的就是
    def find_only_odd_num(arr):
        temp = {i: 0 for i in arr}
        for i in arr:
            temp[i] += 1
        for key, val in temp.items():
            if val == 1:
                return key
        return -1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

解法二
- 利用栈的特性,在里面就删除,不在里面,就是入栈,栈中最后剩下的就是。

def find_only_odd_num_01(arr):
    stack = []
    for i in arr:
        if i not in stack:
            stack.append(i)
        else:
            stack.remove(i)
    return stack[-1]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

解法三
- 利用异或运算的特性,N= N^0,0=N^N,经过一轮异或之后剩下的一定是只出现奇数次的数

def find_only_num(arr):
    if not arr:
        return -1
    elif len(arr) == 1:
        return arr[0]
    else:
        eor = 0
        for i in arr:
            eor = eor ^ i
    return eor
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

java code

public static void printOddTimesNum(int[] arr){
        int eor = 0;
        for (int i = 0; i < arr.length; i++) {
            eor = eor ^ arr[i]; // 0 ^ N = N
        }
        System.out.println(eor);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/602443
推荐阅读
相关标签
  

闽ICP备14008679号