zoukankan      html  css  js  c++  java
  • LeetCode136,137寻找只出现一次的数

    1.题目意思:在数组中,只有一个数字只出现了一次 其他的都出现了两次。找出那个只出现一次的数字。

    1 //利用位运算 异或   两个相同的数字异或为0
    2     public int singleNumber(int[] nums) {
    3          int res = 0 ;
    4           for (int i = 0; i < nums.length; i++) {
    5             res ^=nums[i];
    6         }
    7           return res;
    8     }

    2.题目意思:数组中,每个数字都出现三次  除了只有一个数字只出现了一次。找出那个只出现一次的数字。

     1 // 方法1:排序解
     2     public static int singleNumber(int[] nums) {
     3         Arrays.sort(nums);
     4         int res = 0;
     5         for (int i = 0; i < nums.length; i += 3) {
     6             if (i == nums.length - 1) {
     7                 res = nums[i];
     8                 break;  //continue 可以
     9             }
    10             if (nums[i] == nums[i + 1]) {
    11                 continue;
    12             }else {
    13                 res = nums[i];
    14                 break;
    15             }
    16         }
    17         return res;
    18     }
    1 //位运算解---没看懂---哪位大佬知道可以在下面告知我--万分感谢!!!!
    2     public static int singleNumber1(int[] nums) {
    3         int one = 0, two = 0;
    4         for (int i : nums) {
    5             one = (one ^ i) & ~two;// ~补位运算
    6             two = (two ^ i) & ~one;
    7         }
    8         return one;
    9     }


    //还有一种思路 : 就是用set集合存储,然后求和,然后乘3,减去原数组的和,在除以2---就是我想得到的数;
  • 相关阅读:
    C#三元运算符
    WIN系统查询版本
    C# switch 语句
    C#反编译
    AssemblyInfo.cs 文件信息
    win系统如何在桌面显示我的电脑
    MVC传值前台
    js去除html标记
    打开页面跳转到区域下的控制器
    Hive常用操作之数据导入导出
  • 原文地址:https://www.cnblogs.com/ntbww93/p/9112057.html
Copyright © 2011-2022 走看看