Leetcode题目136.只出现一次的数字(简单)
---恢复内容开始---
题目描述:
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
说明:
你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?
示例 1: 输入: [2,2,1]
输出: 1
示例 2: 输入: [4,1,2,1,2]
输出: 4
思路分析:
思路一:暴力枚举
思路二:Hash,空间换时间
思路三:异或(两个数异或,相同为0,相异为1,1表示真,0表示假)
代码实现:
解法一:暴力枚举
class Solution {
   public static int singleNumber(int[] nums) {
        int cur;
        for (int i = 0; i < nums.length; i++) {
            cur = nums[i];
            boolean flag = false;
            for (int j = 0; j < nums.length; j++) {
                if (nums[j] == cur&&i!=j) {
                    flag = true;
                }
            }
            if (!flag) {
                return cur;
            }
        }
        //没有找到这样的元素
        return -1;
    }
}
时间复杂度:O(n^2)
空间复杂度:O(1)
解法二:
class Solution {
      public static int singleNumber(int[] nums) {
        //用空间换时间:key代表元素值,value代表出现的次数
        Map<Integer, Integer> map = new HashMap<>(nums.length);
        for (int i = 0; i < nums.length; i++) {
            Integer count = map.get(nums[i]);
            map.put(nums[i], count == null ? 1 : ++count);
        }
        for (Integer num : map.keySet()) {
            if (map.get(num) == 1) {
                return num;
            }
        }
        return -1;
    }
}
时间复杂度:O(N)
空间复杂度:O(N)
解法三:异或
class Solution {
    public static int singleNumber(int[] nums) {
        int res = 0;
        for (int i = 0; i < nums.length; i++) {
            res = res ^ nums[i];
        }
        return res;
    }
}
时间复杂度:O(N)
空间复杂度:O(1)
Leetcode题目136.只出现一次的数字(简单)的更多相关文章
- 力扣(LeetCode) 136. 只出现一次的数字
		
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...
 - 【Leetcode】【简单】【136. 只出现一次的数字】【JavaScript】
		
题目描述 136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外 ...
 - Java实现 LeetCode 136 只出现一次的数字
		
136. 只出现一次的数字 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现 ...
 - LeetCode:137. 只出现一次的数字 II
		
LeetCode:137. 只出现一次的数字 II 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. ...
 - 【LeetCode】137. 只出现一次的数字 II(剑指offer 56-II)
		
137. 只出现一次的数字 II(剑指offer 56-II) 知识点:哈希表:位运算 题目描述 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 .请你找出并返回 ...
 - 136.只出现一次的数字 leetcode ^运算符 JavaScript解法
		
leetcode上的一道题简单题 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间 ...
 - LeetCode 136. 只出现一次的数字(Single Number)
		
题目描述 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: ...
 - Leetcode 136.只出现一次的数字 By Python
		
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...
 - python(leetcode)-136只出现一次的数字
		
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. 你可以不使用额外空间来实现吗? 示例 1: 输入: [ ...
 
随机推荐
- VBA学习资料分享-4
			
工作中经常要从数据库把数据跑出来放到EXCEL上,才能进行下一步的操作,那么VBA如何结合SQL提取数据呢?答案就是ADO. 声明和实例变量 引用法——引用Microsoft ActiveX Data ...
 - 6. Java基本数据类型
			
Java 基本数据类型 变量就是申请内存来存储值.也就是说,当创建变量的时候,需要在内存中申请空间. 内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据. 因此,通过定义不 ...
 - Javascript绑定事件的两种方式的区别
			
命名函数 <input type="button" onclick="check()" id="btn"/> <scrip ...
 - js 数值精确运算使用math.js
			
javaScript 浮点数运算的精度问题 问题:编程中你可能会遇到0.1*7=0.7000000000000001; 原因:几乎所有的编程语言都采用了 IEEE-745 浮点数表示法,任何使用二进制 ...
 - spring boot 的一些高级用法
			
1 spring boot 项目的创建 参考 https://www.cnblogs.com/PerZhu/p/10708809.html 2 首先我们先把Maven里面的配置完成 <depen ...
 - 前端基础(二):CSS
			
CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 CSS实例 ...
 - (十五)连接网络adb,android模拟器打开
			
第一步:Android开发板连接usb和网线 adb shell setprop service.adb.tcp.port 5555 adb shell stop adbdadb shell star ...
 - web开发:jquery初级
			
一.JQ入门 二.引入JQ 三.页面加载 四.分析JQ源码流程 五.JQ操作 六.c菜单栏案例 一.JQ入门 what is jQuery ???1.jQuery是对原生JavaScript二次封装的 ...
 - python django中的orm外键级联删除
			
今天添加了一个路由表,路由表做外键,然后添加了几个组,路由表为组的外键,当我使用删除功能对路由表进行删除时,竞然将我的组也相当的删除了:尽管这是测试,但放到生产环境中还是会发生意外的:这个问题要解决: ...
 - 【linux】ubuntu修改系统时间
			
ubuntu修改时间步骤 ① 先把系统校验时间的程序停止掉 /lib/systemd/systemd-timesyncd systemd 开始,包括了一个名为systemd-timesyncd 的守护 ...