给定所有其他数字都出现两次的算法,该算法可找到一个仅在数组中出现一次的数字

编程入门 行业动态 更新时间:2024-10-10 22:28:05
本文介绍了给定所有其他数字都出现两次的算法,该算法可找到一个仅在数组中出现一次的数字的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我能想到的是:

算法:

  • 具有一个哈希表,该表将存储数字及其关联的计数
  • 解析数组并增加数字的计数.
  • 现在解析哈希表以获取计数为1的数字.
  • 你们能比这更好地考虑解决方案吗? 使用O(n)运行时且不占用额外空间

    Can you guys think of solution better than this. With O(n) runtime and using no extra space

    推荐答案

    在Ruby中的答案,假设一个单例,而所有其他正好是两个样子:

    An answer in Ruby, assuming one singleton, and all others exactly two appearances:

    def singleton(array) number = 0 array.each{|n| number = number ^ n} number end irb(main):017:0> singleton([1, 2, 2, 3, 1]) => 3

    顺便说一下,

    ^是按位XOR运算符.对一切进行XOR!哈哈哈!

    ^ is the bitwise XOR operator, by the way. XOR everything! HAHAHAH!

    Rampion使我想起了inject方法,因此您可以一行完成此操作:

    Rampion has reminded me of the inject method, so you can do this in one line:

    def singleton(array) array.inject(0) { |accum,number| accum ^ number }; end

    更多推荐

    给定所有其他数字都出现两次的算法,该算法可找到一个仅在数组中出现一次的数字

    本文发布于:2023-11-30 22:06:05,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1651612.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:算法   数字   两次   组中

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!