首页 > 其他分享 >位运算

位运算

时间:2023-06-19 19:15:25浏览次数:23  
标签:return 运算 nums int Solution public View

1、统计比特数

 1 class Solution {
 2     public int[] countBits(int n) {
 3         int[] ans=new int[n+1];
 4         for(int i=0;i<=n;i++){
 5             int num=i;
 6             int count=0;
 7             while(num>0){
 8                 num=num&(num-1);
 9                 count++;
10             }
11             ans[i]=count;
12         }
13         return ans;
14     }
15 }
View Code

2、颠倒二进制位

 1 public class Solution {
 2     public int reverseBits(int n) {
 3         int ans=0;
 4         int bits=32;
 5         while(bits>0){
 6             ans<<=1;//左移一位
 7             ans+=n&1;//加上n最后一位
 8             n>>=1;//右移一位
 9             bits--;
10         }
11         return ans;
12     }
13 }
View Code

3、判断2进制是否是2的幂

判断1的个数是否为1

1 class Solution {
2     //位运算
3     public boolean isPowerOfTwo(int n) {
4         return n > 0 && (n & (n - 1)) == 0;
5     }
6     
7 }
View Code

4、找缺失的数

1)异或 位运算

1 class Solution {
2     public int missingNumber(int[] nums) {
3         int n = nums.length;
4         int ans = 0;
5         for (int i = 0; i <= n; i++) ans ^= i;
6         for (int i : nums) ans ^= i;
7         return ans;
8     }
9 }
View Code

2)排序,找到i!=num[i]

 1 class Solution {
 2     public int missingNumber(int[] nums) {
 3         int n = nums.length;
 4         Arrays.sort(nums);
 5         for (int i = 0; i < n; i++) {
 6             if (nums[i] != i) return i;
 7         }
 8         return n;
 9     }
10 }
View Code

3)哈希数组

 1 class Solution {
 2     public int missingNumber(int[] nums) {
 3         int n = nums.length;
 4         boolean[] hash = new boolean[n + 1];
 5         for (int i = 0; i < n; i++) hash[nums[i]] = true;
 6         for (int i = 0; i < n; i++) {
 7             if (!hash[i]) return i;
 8         }
 9         return n;
10     }
11 }
View Code

4)作差法,先求出不缺失的等差数列的和,再与得到的实际的和作差

1 class Solution {
2     public int missingNumber(int[] nums) {
3         int n = nums.length;
4         int cur = 0, sum = n * (n + 1) / 2;
5         for (int i : nums) cur += i;
6         return sum - cur;
7     }
8 }
View Code

5、找出两个字符串的不同

异或

 1 class Solution {
 2     public char findTheDifference(String s, String t) {
 3         int ret = 0;
 4         for (int i = 0; i < s.length(); ++i) {
 5             ret ^= s.charAt(i);
 6         }
 7         for (int i = 0; i < t.length(); ++i) {
 8             ret ^= t.charAt(i);
 9         }
10         return (char) ret;
11     }
12 }
View Code

 

 

标签:return,运算,nums,int,Solution,public,View
From: https://www.cnblogs.com/coooookie/p/17491943.html

相关文章

  • Java 运算符的使用
    Java运算符的使用1.算术运算符算术运算符包括:+,-,*,/,%,++,--,其中需要注意的是%,++,--;%取模运算也叫做取余,在Java中取余的规则:a%b=a-a/b*b++和--叫做自增运算即+1或-1++在前,先自加,后赋值++在后,先赋值,后自加(--运算与自增用法类似)2.算......
  • (二)JS数据类型、数据类型检测、数据类型转换、运算符、操作网页元素
    一、数据类型【JS的基本数据类型有哪些?基本数据类型和引用数据类型的区别】  二、数据类型检测 三、数据类型转换【隐式转换、强制转换】  四、运算符  五、操作网页元素 ......
  • new 和 delete 运算符
     下面是使用new运算符来为任意的数据类型动态分配内存的通用语法:newdata-type;在这里,data-type 可以是包括数组在内的任意内置的数据类型,也可以是包括类或结构在内的用户自定义的任何数据类型。让我们先来看下内置的数据类型。例如,我们可以定义一个指向double类型的指针......
  • 四、C#运算符
    1、Convert不兼容的类型转换使用Convert。2、++、--++:分为前++和后++,不管是前++还是后++,最终的结果都是给这个变量加1。区别表现在表达式中:后++,先运算后加一;前++,先加一后运算//++intnumber=10;intnumber1=10;int......
  • C++ 重载运算符
    为了叙述的方便,以下内容以赋值运算符为例赋值运算符本质是一个名为operator=的函数,某些运算符必须定义为成员函数赋值运算符定义示例代码classFoo{public:Foo&operator=(constFoo&);};......
  • DataBinding运算符
    前言1、算术运算符说到运算,四则运算一定是我们首先想到的。加法运算+、减法运算-、惩罚运算*、除法运算/、求余运算%五种运算,我们只以加法运算做一个示范。首先我们准备在activity_main中声明并使用两个int类型的变量:<variablename="num1"type="Integer"/><variable......
  • 基础语法2运算符
    基础语法2运算符Java运算符可以分为以下几种类型:算术运算符:用于执行数学运算,如+、*、/、%(取余)等。关系运算符:用于比较两个值的大小或相等性,如==、!=、>、<、>=、<=等。逻辑运算符:用于判断两个或多个条件的真假,如&&、||、!等。位运算符:用于对整数类型的二进制位进行操作,如&......
  • 前端学习C语言 - 第二篇(常量、运算符、控制和循环)
    常量、运算符、控制和循环前文我们写了第一个c语言程序,了解了基本的数据类型。本篇将继续学习:常量、运算符、控制语句和循环语句。常量#define常量#define是用来定义常量和宏的预处理指令。定义常量的一般形式:#define常量名常量值。就像这样:#defineMAX_NUM100//定义整型......
  • 运算符重载知识点总结
    #运算符重载在数学上,两个复数可以直接进行+、-等运算。但在C++中,直接将+或-用于复数对象是不允许的。•有时会希望,让对象也能通过运算符进行运算。这样代码更简洁,容易理解。•例如:complex_a和complex_b是两个复数对象;求两个复数的和,希望能直接写:complex_a+complex_b在数学上......
  • C++面试八股文:了解位运算吗?
    C++面试八股文:了解位运算吗?某日二师兄参加XXX科技公司的C++工程师开发岗位第12面:面试官:了解位运算吗?二师兄:了解一些。(我很熟悉)面试官:请列举以下有哪些位运算?二师兄:按位与(&)、按位或(|)、按位异或(^),按位取反(~)、左移(<<)和右移(>>)。面试官:好的。那你知道位运算有什么优势吗?......