leetcode算法——136. Single Number(基于JAVA)
来源:互联网 发布:淘宝闲鱼拍卖是真的吗 编辑:程序博客网 时间:2024/05/08 09:27
Given an array of integers, every element appears twice except for one. Find that single one.
Note:
Your algorithm should have a linear runtime complexity. Could you implement it without using extra memory?
翻译:
给定一个整数数组,每个元素出现两次除了一个,请找到那一数。
注意:
你的算法运行时应该有一个线性的复杂性。你能实现它不使用额外的内存吗?
解题思路1:
首先分析这个题目发现需要注意,所有的数都会出现2次,除了一个,但是并没有说这个数是出现了几次,所以那个single number出现的次数只是不等于2而已。在没有考虑他的额外要求时,很简单很单纯的就是使用2层for循环对数组中所有数字的出现次数计数,最后判断次数不等于2的就是那个single number。
这个解法太没技术含量,但是能够满足基本要求。
public int singleNumber(int[] nums) { int len = nums.length; int count []= new int[len]; for(int i = 0; i < len; i++){ for(int j = 0; j < len; j++){ if(nums[i] == nums[j]){ count[i]++; } } if(count[i] != 2){ return nums[i]; } } return 0; }
具体情况如下:
解题思路2:后面找了别人的代码,发现一个很简单的方法:异或
参考代码的核心思路就是运用了<两个相同的数进行按位异或运算结果一定为0,一个数与0按位异或结果即为该数本身>,所以讲数组中所有数按位异或,留下的那个数即是那个single number。
public int singleNumber(int[] nums) { int res = 0; for(int i = 0; i < nums.length; i++){ res ^= nums[i]; } return res; }
具体情况如下:
解题思路3:还有一种类似的:
if (nums == null || nums.length < 1) { throw new IllegalArgumentException("nums"); } for (int i = 1; i< nums.length; i++) { nums[0] ^= nums[i]; } return nums[0];具体情况如下:
0 0
- leetcode算法——136. Single Number(基于JAVA)
- LeetCode——136. Single Number&&137. Single Number II
- LeetCode — Single Number
- LeetCode—Single Number
- LeetCode 136. Single Number 题解—— Java
- leetcode-java-136. Single Number
- LeetCode 136. Single Number(Java)
- [LeetCode] 136. Single Number java
- LeetCode-136. Single Number (Java)
- Leetcode——136. Single Number
- LeetCode——136. Single Number
- LeetCode——Single Number
- leetcode —— single number
- LeetCode——Single Number
- [Leetcode] Single Number (Java)
- LeetCode - Single Number (JAVA)
- [Leetcode] Single Number Java
- [LeetCode][Java] Single Number
- 提高办公效率的方法-工具篇
- 哪些字段适合建立索引
- java 的初步认识
- tair 淘宝的分布式key/value存储系统
- 轻量级apache dbutil搭建的一个demo,如果嫌hibernate等ORM框架太重的话可以考虑dbutil
- leetcode算法——136. Single Number(基于JAVA)
- 从AsyncTask往调用它的activity中返回数据
- CSU 1809 Parenthesis (线段树)【2016年湖南省第十二届大学生计算机程序设计竞赛 - G】
- button按钮
- Java 抽象&接口
- LeetCode 260 Single Number III (位运算 推荐)
- 欢迎使用CSDN-markdown编辑器
- HTML标签
- Mariadb(mysql)数据库管理系统-02——表管理