`
leonard1853
  • 浏览: 85076 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

LeetCode 136. Single Number

阅读更多

从今天起,每天坚持一道算法题,有时间就发到博客中,坚持!!!为了以后面试更从容。

 

先来一道简单的:

136. Single Number

 

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、不要用额外的存储空间。

          我们很容易想到,成对出现的数字相减等于0,所以只要成对相减完,剩下的就是单独出现的数字。

          我能想到的最简单思路:

          1、将数组排序,从大到小,从小到大均可;

          2、设置步长为2,两两相减,等于0则调整步长,否则找到单独出现的数字;

          3、收尾:若单独出现的数字出现在最后一个,直接返回。

 

代码如下:

public class Solution {
    public int singleNumber(int[] nums) {
        Arrays.sort(nums);
        
        int index = 0;
        while (index < nums.length - 1) {
            if (nums[index] - nums[index + 1] == 0) {
                index = index + 2;
            } else {
                return nums[index];
            }
        }
        
        return nums[index];
    }
}

 

排序直接使用Arrays.sort,如果大家有其他更好思路,欢迎拍砖,谢谢!

2
1
分享到:
评论
1 楼 mrpanyu 2016-02-04  
有一种操作符叫“异或”:

int[] arr = new int[] { 6, 11, 7, 7, 60, 11, 6, 17, 21, 18, 60, 9, 82, 18, 21, 9, 82 };
int a = 0;
for (int i = 0; i < arr.length; i++) {
a = a ^ arr[i];
}
System.out.println(a);

相关推荐

    python-leetcode题解之136-Single-Number

    python python_leetcode题解之136_Single_Number

    颜色分类leetcode-leetcode.etc:OJ、leetcode等解决方案

    颜色分类leetcode leetcode.etc My solutions of the problems in Online judge website, leetcode, lintcode, etc. leetcode: 13 problems solved lintcode: 49 problems solved Title URL Solution Difficulty ...

    LeetCode最全代码

    136 | [Single Number](https://leetcode.com/problems/single-number/) | [C++](./C++/single-number.cpp) [Python](./Python/single-number.py) | _O(n)_ | _O(1)_ | Easy ||| 137 | [Single Number II]...

    leetcode Single Number II - 位运算处理数组中的数 - 代金桥 - 博客园1

    《位运算处理数组中的数——以LeetCode Single Number II为例》 在计算机科学中,位运算是一种高效且灵活的数据处理手段,尤其在处理数组中特定数值的问题时,它能展现出强大的能力。LeetCode上的Single Number II...

    leetcode答案-leetcode-java:leetcode的Java代码

    leetcode 答案leetcode-java leetcode.com 的 Java 答案 ================索引================ ...Single Number com.leetcode.tree Balanced Binary Tree Maximum Depth of Binary Tree Same Tree

    python-leetcode题解之137-Single-Number-II

    python python_leetcode题解之137_Single_Number_II

    Leetcode book刷题必备

    根据提供的文件信息,我们能提炼出一系列IT相关知识点,主要是围绕LeetCode这本电子书的主题——即编程面试题目解答。此电子书内容丰富,涵盖了算法和数据结构中常见的问题及其解决方案,非常适合准备技术面试的读者...

    C++:异或运算符大全

    2. LeetCode No136. Single Number 问题描述:给定一个整数数组,其中只有一个数字出现一次,其余数字出现两次,找到那个只出现一次的数字。 解决方案:同样利用异或运算的性质,数组中所有元素的异或结果就是那个...

    LeetCode去除数组重复元素-Arithmetic-Swift:一些算法的swift实现

    LeetCode去除数组重复元素 Arithmetic-Swift 一些算法的swift实现 桶排序 冒泡排序 快速排序 ##正好看见LeetCode可以刷Swift的题目 开始慢慢刷 swift有playground ...Single Number 石头游戏 292. Nim Gam

    python-leetcode面试题解之第136题只出现一次的数字-题解.zip

    def singleNumber(nums): single_num = 0 for num in nums: single_num ^= num return single_num ``` 在这个代码中,`single_num`初始值为0,然后遍历整个数组`nums`,对每个元素执行异或操作。由于每个元素...

    php-leetcode题解之只出现一次的数字.zip

    function singleNumber($nums) { $result = 0; foreach ($nums as $num) { $result ^= $num; } return $result; } ``` 这段代码中,`$result`初始值为0,然后遍历数组`$nums`,对每个元素执行异或操作,最终...

    leetcode简单+中等题目参考答案java版

    public int singleNumber(int[] nums) { int res = 0; for (int n : nums) { res = res ^ n; } return res; } ``` **解析:** 这段代码巧妙地利用了异或运算的特性来解决问题。异或运算有以下特点: 1. 任何数...

    2018年最新Google Onsite面经总结1

    Single Number等。这类题目通常要求读者使用排序和查找算法来解决问题,例如使用快速排序、归并排序、-binary-search等算法。 本文总结了Google Onsite面经的各种题目,涵盖了LeetCode原题中的多个类题目,具有很...

    leetcode切割分组-leetcode:leetcode

    136_single_number.py # 位操作:异或(xor)操作 x ^ 0 = x; x ^ x = 0 sum 001_two_sum.py # 求list中能加和成指定值的两个位置 015_3_sum**.py # 求list中能加和成0的三个值 数列 004_median_of_two_sorted_arrays....

    Leetcode的ac是什么意思-LeetCodeInJava:leetcode-java

    Leetcode的ac是什么意思 LeetCodeInJava List #98 Validate Binary Search Tree #100 Same Tree #104 Maximum Depth of Binary Tree #122 Best Time to Buy and Sell Stock II #136 Single Number #150 Evaluate ...

    Leetcode部分试题解析

    3. **Single Number**:在一个只包含两个重复数字的整数列表中找到唯一的单个数字。利用Python的位运算,可以实现快速查找单数。 4. **Same Tree**:判断两棵树是否结构相同且对应节点值相等。这涉及到深度优先搜索...

    leetcode解题笔记1

    int singleNumber(vector&lt;int&gt;& nums) { int result = 0; for (int num : nums) { result ^= num; } return result; } ``` 2. **使用异或查找字符串中的新增字符**: 类似于找到数组中唯一数字的方法,...

    js-leetcode题解之有序数组的单个元素-题解.zip

    function singleNumber(nums) { let i = 0, j = nums.length - 1; while (i ) { if (nums[i] === nums[j]) { i++; j--; } else { return nums[i] !== nums[++i] ? nums[i] : nums[j]; } } return nums[i];...

    常见算法题答案及解析

    根据提供的文件内容,可以整理出以下IT知识点,针对LeetCode算法题目的解题方法、时间复杂度、空间复杂度的分析,以及算法相关基础知识点的总结。 一、数组/字符串 ***o Sum:需要查找数组中两个数相加等于特定值的...

    leetcode和oj-leetCode:尝试一些OJ

    Single Number 52.2% Easy 371 两个整数的和 51.6% Easy 104 二叉树的最大深度 50.1% Easy 325% Add the Easy 389.数字 49.9% 简单 226 反转二叉树 48.9% 简单 283 移动零点 46.9% 简单 404 左叶总和 45.5% 简单 383...

Global site tag (gtag.js) - Google Analytics