双重检验锁 docker安装 grails eloquent textview grid chartjs postman alertifyjs vue实例 vue插件库 bootstrap后台管理系统模板 leach算法 flutter 缺点 linux启动数据库 python逻辑运算符 python中的range函数 java读取文件数据 java中的集合 主板芯片组天梯图 navicat注册机 pr缩放 millenium dll之家 编辑软件 抖音代码 苏拉玛起义的任务线 cdr字体加粗 foobar2000插件 cdlinux教程 保卫萝卜沙漠7攻略 vbs代码 小米主题编辑器 浣海之核 pyodbc 联发科p22 梦幻西游手游辅助 网红头像男 ps铅笔笔刷 苹果8拆机视频
当前位置: 首页 > 学习教程  > 编程语言

只出现一次的数字(Java 用Set实现)

2020/7/24 9:29:02 文章标签:

**题目:**给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?

示例 1:

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

示例 2:

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

第一种方法:用Set实现

class Solution {
    public int singleNumber(int[] nums) {
        Set<Integer> s=new HashSet<>();
        for(int i=0;i<nums.length;++i){
        	//add:如果指定的元素不存在,则将其指定的元素添加
        	//如果要添加的元素存在,则返回false
        	//所以当重复的数字要add时,if成立,则删除这个重复的数字
            if(!s.add(nums[i])){
                s.remove(nums[i]);
            }
        }
        //此时s里只剩下一个不重复的数字了
        Object[] o=s.toArray();
        //返回0号下标的元素,即返回不重复的数字
        return (int)o[0];
    }
}

第二种方法:异或

class Solution {
    public int singleNumber(int[] nums) {
        int ret=0;
        for(int i=0;i<nums.length;++i){
            ret^=nums[i];
        }
        return ret;
    }
}

本文链接: http://www.dtmao.cc/news_show_50089.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?