只出现一次的数字 2025-08-04 作者 Y Y 870 字 本文最后编辑于 前,其中的内容可能需要更新。 只出现一次的数字 题目 123456789101112131415给你一个 非空 整数数组 nums,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。示例 1输入:nums = [2,2,1]输出:1示例 2输入:nums = [4,1,2,1,2]输出:4示例 3输入:nums = [1]输出:1 解法1 1234567891011121314151617181920212223思路:将数字作为key存入数组,值为出现的次数代码:function singleNumber($nums){ $arr = []; foreach ($nums as $num) { if (!isset($arr[$num])) { $arr[$num] = 0; } $arr[$num]++; } foreach ($arr as $k => $val) { if ($val === 1) { return $k; } } return 0;} 解法2 12345678910111213141516思路:使用^异或运算,当a^a前后两个值相同时,返回0,因为只有一个值出现一次,其他的出现两次,刚好抵消为0代码:/** * @param Integer[] $nums * @return Integer */function singleNumber($nums) { $a = 0; foreach ($nums as $num) { $a ^= $num; } return $a;} < 上一篇 下一篇 >