重温算法之只出现一次的数字

简介: 这是一道特别好的题目,虽然题目难度是简单,其实我们往往都会把简单问题复杂化,所以会导致问题越解越难,这就是要看看我们的大脑够不够灵光了。

一.题目介绍


1.题目来源


链接:LeetCode


2.题目


给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。


说明:

你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?


示例1:

输入: [2,2,1] 输出: 1


示例2:

输入: [4,1,2,1,2] 输出: 4


二.具体实现


1.实现思路


题目要求找到出现一次的元素,为了节约时间,我们可以先将其排序,然后用模比较,如果当前位只出现一次并且它的下一位元素与其不相同则返回其前面一个元素,否则返回最后一个元素。


2.实现代码


1)自己的实现方式

public int singleNumber(int[] nums) {
//先进行排序
    Arrays.sort(nums);
    //进行比较
    for(int x = 0 ; x < nums.length ;x++){
        if(x%2 == 1 && nums[x] != nums[x-1]){
            return nums[x-1];
        }
    }
    //返回
    return nums[nums.length-1];
}
复制代码


2)题友的实现方式


最巧妙的思路和方法,使用异或来解决,什么是异或?即两者之间相同为0,不同为1,以数组的第一位为头,然后循环数组,如果数组中元素与其相同则返回0,反之返回1,而其1对应的则是满足题目条件的元素。

微信截图_20220531203531.png


3.运行结果

微信截图_20220531203558.png

微信截图_20220531203623.png


三.题后思考


这是一道特别好的题目,虽然题目难度是简单,其实我们往往都会把简单问题复杂化,所以会导致问题越解越难,这就是要看看我们的大脑够不够灵光了。

目录
相关文章
算法练习第九天——只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
|
机器学习/深度学习 存储 算法
算法打卡Day23_leetcode _136. 只出现一次的数字
算法打卡Day23_leetcode _136. 只出现一次的数字
算法打卡Day23_leetcode _136. 只出现一次的数字
|
JavaScript 算法 前端开发
【前端算法】JS实现数字千分位格式化
JS实现数字千分位格式化的几种思路,以及它们之间的性能比较
343 1
|
机器学习/深度学习 算法 数据建模
K近邻算法识别数字---OpenCV-Python开发指南(40)
K近邻算法识别数字---OpenCV-Python开发指南(40)
173 0
K近邻算法识别数字---OpenCV-Python开发指南(40)
|
存储 算法 Java
算法打卡Day5_lecode_448. 找到所有数组中消失的数字
算法打卡Day5_lecode_448. 找到所有数组中消失的数字
算法打卡Day5_lecode_448. 找到所有数组中消失的数字
|
算法 Java
Map与Set高频面试算法题(只出现一次的数字,复制带随机指针的链表,宝石与石头,旧键盘,前k个高频单词)(Java实现)
给一个非空整数数组,只有一个元素出现了一次,剩余的元素都出现了两次,,请找出那个只出现一次的数字
Map与Set高频面试算法题(只出现一次的数字,复制带随机指针的链表,宝石与石头,旧键盘,前k个高频单词)(Java实现)
|
存储 前端开发 算法
LeetCode只出现一次的数字使用JavaScript解题|前端学算法
LeetCode只出现一次的数字使用JavaScript解题|前端学算法
136 0
|
算法 PHP
力扣(LeetCode)算法题解:1365. 有多少小于当前数字的数字
力扣(LeetCode)算法题解:1365. 有多少小于当前数字的数字
138 0
|
算法 PHP
力扣(LeetCode)算法题解:1323. 6 和 9 组成的最大数字
力扣(LeetCode)算法题解:1323. 6 和 9 组成的最大数字
134 0
|
算法 PHP
力扣(LeetCode)算法题解:1295. 统计位数为偶数的数字
力扣(LeetCode)算法题解:1295. 统计位数为偶数的数字
113 0