---恢复内容开始---

题目描述:

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

说明:

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

示例 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.只出现一次的数字(简单)的更多相关文章

  1. 力扣(LeetCode) 136. 只出现一次的数字

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

  2. 【Leetcode】【简单】【136. 只出现一次的数字】【JavaScript】

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

  3. Java实现 LeetCode 136 只出现一次的数字

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

  4. LeetCode:137. 只出现一次的数字 II

    LeetCode:137. 只出现一次的数字 II 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现了三次.找出那个只出现了一次的元素. 说明: 你的算法应该具有线性时间复杂度. ...

  5. 【LeetCode】137. 只出现一次的数字 II(剑指offer 56-II)

    137. 只出现一次的数字 II(剑指offer 56-II) 知识点:哈希表:位运算 题目描述 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 .请你找出并返回 ...

  6. 136.只出现一次的数字 leetcode ^运算符 JavaScript解法

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

  7. LeetCode 136. 只出现一次的数字(Single Number)

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

  8. Leetcode 136.只出现一次的数字 By Python

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

  9. python(leetcode)-136只出现一次的数字

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

随机推荐

  1. dev linechart动态加载数据(像股票一样的波动)

    图片地址:https://blog.csdn.net/qq_33459369/article/details/80060196:(盗图) 接下来是封装的代码 #region 动态折线图 public ...

  2. 在windows部署service

    首先,需要在环境变量的path中加入Install Util的路径: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 注意这里的Framework\v2.0 ...

  3. Javascript的学习清单

    Javascript的学习清单 Javascript学习资源 程序员必读书籍 深入理解JavaScript系列 es6教程 jQuery中文文档 vue官网 zeptojs中文版 常用的插件与UI组件 ...

  4. 小程序 ----踩坑 ---安卓iOS兼容等

    关于小程序一些小功能的代码都在这个GitHub上,感兴趣的可以去看看,https://github.com/huihuijiang/miniProgram目前有:列表左滑删除,拖拽浮标 一.小程序坑1 ...

  5. 11.SpringMVC注解式开发-处理器方法的返回值

    处理器方法的返回值 使用@Controller 注解的处理器的处理器方法,其返回值常用的有四种类型 1.ModelAndView 2.String 3.void 4.自定义类型对象 1.返回Model ...

  6. Android Stdio部分配置

    一.Error:Cause: unable to find valid certification path to requested target主要是在根目录的build.gradle下配置的jc ...

  7. DOS导出文件夹或文件名

    dir /s /w >a.txt 应用dos导出当前目录下的文件夹名称(包括子目录,但是不包括文件,仅仅导出文件夹) dir /s/b/a:d >a.txt

  8. 05_ Flume多级Agent之间串联案例

    多级agent之间串联: 从tail命令获取数据发送到avro端口,另一个节点可配置一个avro源来获取数据,发送外部存储 启动两个Agent节点: 使用scp命令拷贝flume安装包到另一台虚拟机; ...

  9. 01_Hive简介及其工作机制

    1.Hive简介 Hive是一个基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一个表.并提供类SQL查询功能, 可以将sql语句转换为MapReduce任务运行.其优点是学习成本低, ...

  10. 面试题——常见的gc算法有哪些?

    常见的gc算法有哪些? java garbage collection是一个自动进程,用于管理程序使用的运行时内存.通过自动执行JVM,可以减轻程序中分配和释放内存资源的开销. 垃圾回收机制是由垃圾回 ...