单号I
收藏
编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天就整理分享《单号I》,文章讲解的知识点主要包括,如果你对文章方面的知识点感兴趣,就不要错过,在这可以对大家的知识积累有所帮助,助力开发能力的提升。
问题
我们必须找到只出现过一次的数字。
暴力方法是使用 hashmap 来跟踪值的计数,然后返回 count =1 的值;
使用位操作的最佳方法:
我们知道对于所有其他组合,1^0 = 1、0 ^1 = 1、0 ^ 0 = 0、1 ^ 1= 0。
这意味着对于相同的值,异或给出 0,因此如果我们异或数组中的所有值,它将只给出计数为 1 的数字(因为其余值将变成 0)
tc:o(n)
sc:o(1)
class Solution { public int singleNumber(int[] nums) { int single = nums[0]; for(int i =1;i<nums.length;i++){ single = single^nums[i]; } return single; } }
到这里,我们也就讲完了《单号I》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注公众号,带你了解更多关于的知识点!
版本声明 本文转载于:dev.to 如有侵犯,请联系删除