zoukankan      html  css  js  c++  java
  • LeetCode--Single Number

    题目:Given an array of integers, every element appears twice except for one. Find that single one.

    注意:这个数组没有说是固定的顺序

    思路:import java.util.Arrays;

    public class SingleNum {
        public int singleNumber(int[] nums) {
            int r = 0;
            for (int x : nums) {
                r = r ^ x;             //这里使用的是异或运算,其有两个大的特性:1、a=0^a;  
                                          //2、a^b = b^a ; 满足交换律,那么在混乱次序(1,2,3,4,3,2,1)的时候,
                                          //可以将其先排成(1,1,2,2,3,3,4),然后运用性质1来做,返回即是;
            }
            return r;
        }
    }

    做题的时候,顺便把Java的按位运算逻辑学习了一下,很有感受。现总结如下:

    1、异或操作:a^b,  "相同的为0,不同的为1" 。

    性质:

    (1)这里的A,B,P的位置是可以互换的!!!(同或也是可以)

    (2)若需要交换两个变量的值,除了通常使用的借用中间变量进行交换外,还可以利用异或,仅使用两个变量进行交换,如:a=a^b;  b=b^a;  a=a^b;(好用!)

    (3) A:  a^0 =a;

    B :         a ^b ^c = a ^ (b ^ c) = (a ^ b) ^ c;    (结合律)

    C:          a ^ b ^ a = b ;   (变换位置)

    D:         d = a ^ b^ c 可以推出 a = d ^ b ^ c; 

    2、同或操作(异或的非):!(a^b),  "相同的为1,不同的为0"  

    3、与(串联): a&&b ,

    4、或(并联):  a||b ,

    5、非(否):  !a ,

    转自:  http://blog.csdn.net/is_zhoufeng/article/details/8112199     

    http://baike.baidu.com/link?url=bfglXE4Luul-a9zeYR60VwOZ85Z491ejH1KRdwNA_BXaIhU6whX6a8PdeIDKXEZtGaJaEDUSVr8sTOIgIHS15Lb24fpK590ZBfQjlKfOIOwFvQXQ4hGVTHk7XqvtBpjF

    态度决定行为,行为决定习惯,习惯决定性格,性格决定命运
  • 相关阅读:
    python 正则表达式
    Python 集合
    Python 类的使用
    Python 分支、循环语句
    Python 基础之字典(dict)的用法
    Python 之字符串常用操作
    python tuple元组操作
    Python list的常用操作
    appium 二次切换webview后无法找到页面元素
    Locust API 文档
  • 原文地址:https://www.cnblogs.com/neversayno/p/5131749.html
Copyright © 2011-2022 走看看