【手把手带你刷LeetCode】——14.两个整数二进制位不同个数(作业)

简介: 两个整数二进制位不同个数(作业)

目录

原题一: 两个整数二进制位不同个数

原题二:不允许创建临时变量,交换两个整数的内容

结语


【前言】

今天是力扣打卡第14天!

这篇有两个题目,其实是我的作业,感觉挺好的,就发出来了,属于之前的笔试题。

·

原题一: 两个整数二进制位不同个数

题目描述:

输入两个整数,求两个整数二进制格式有多少个位不同。

示例:

输入:22 33
输出:5

题解:

先利用异或相同为0,相异为1的性质求出一个不同位是1的二进制序列,之后再求出该二进制序列有几位是1即可。

代码执行:

#include<stdio.h>
int main()
{
    int n1 = 0;
    int n2 = 0;
    int count = 0;
    int i = 0;
    scanf("%d %d", &n1, &n2);
    int n = n1^n2;
    while(n)
    {
        n = n&(n-1);
        count++;
    }
    printf("%d\n", count);
    return 0;
}


原题二:不允许创建临时变量,交换两个整数的内容

题目描述:

不允许创建临时变量,交换两个整数的内容

方法一:加减法

【敲黑板】:加减法不足的是,如果两个整数足够大,那么它们之和很可能会溢出。

代码执行:

//方法一:加减法(可能会导致溢出)
#include<stdio.h>
int main()
{
  int m = 10;
  int n = 20;
  printf("交换前:m = %d n = %d\n", m, n);
  m = m + n;
  n = m - n;
  m = m - n;
  printf("交换后:m = %d n = %d\n", m, n);
  return 0;
}

方法二:异或法

代码执行:

//方法二:异或法
#include<stdio.h>
int main()
{
  int m = 10;
  int n = 20;
  printf("交换前:m = %d n = %d\n", m, n);
  m = m ^ n;
  n = m ^ n;
  m = m ^ n;
  printf("交换后:m = %d n = %d\n", m, n);
  return 0;
}

对于异或我就不多加解释咯,因为之前在位运算博文中反复提到过了,不熟悉的铁汁们可以康康哦。

https://blog.csdn.net/weixin_57544072/article/details/120798996?spm=1001.2014.3001.5502


结语

今天是力扣打卡第14天!

越努力越幸运,加油哦铁汁们!!


相关文章
|
1月前
|
存储
LeetCode整数反转
解决LeetCode上的整数反转问题的几种方法,包括错误的方法和优化后的解决方案,以及如何避免反转后的整数超出32位有符号整数范围的问题。
35 1
|
3月前
|
搜索推荐 索引 Python
【Leetcode刷题Python】牛客. 数组中未出现的最小正整数
本文介绍了牛客网题目"数组中未出现的最小正整数"的解法,提供了一种满足O(n)时间复杂度和O(1)空间复杂度要求的原地排序算法,并给出了Python实现代码。
114 2
|
1月前
【LeetCode】整数翻转
【LeetCode】整数翻转
15 1
|
1月前
|
存储 C++
Leetcode第十二题(整数转罗马数字)
LeetCode第12题“整数转罗马数字”的解题方法,包括罗马数字的基本规则和特殊规则,以及如何使用C++实现整数到罗马数字的转换。
15 0
|
1月前
|
C++
Leetcode第十三题(罗马数字转整数)
这篇文章介绍了LeetCode第13题“罗马数字转整数”的解题方法,通过一个C++的类`Solution`中的`romanToInt`函数来实现,该函数使用哈希表和遍历字符串的方法,根据罗马数字的规则将输入的罗马数字字符串转换为对应的整数值。
48 0
|
1月前
|
算法 C++
Leetcode第八题(字符串转换整数(atoi))
这篇文章介绍了LeetCode上第8题“字符串转换整数(atoi)”的解题思路和C++的实现方法,包括处理前导空格、正负号、连续数字字符以及整数溢出的情况。
17 0
|
3月前
|
算法 Java
LeetCode第67题二进制求和
这篇文章是关于LeetCode第67题二进制求和的解题思路和代码实现的分享。作者通过分析题目要求和二进制加法的规则,提供了一个Java语言的解决方案,并在最后总结了二进制在算法中的重要性。
LeetCode第67题二进制求和
|
3月前
|
算法
LeetCode第12题目整数转罗马数字
该文章介绍了 LeetCode 第 12 题整数转罗马数字的解法,通过使用 TreeMap 按照整数从大到小排序,先使用大的罗马数字表示整数,再用小的,核心是先表示完大的罗马数字,想通此点该题较简单。
LeetCode第12题目整数转罗马数字
|
3月前
|
算法
LeetCode第8题字符串转换整数 (atoi)
该文章介绍了 LeetCode 第 8 题字符串转换整数 (atoi)的解法,需要对字符串进行格式解析与校验,去除前导空格和处理正负号,通过从高位到低位的计算方式将字符串转换为整数,并处理越界情况。同时总结了这几道题都需要对数字的表示有理解。
LeetCode第8题字符串转换整数 (atoi)
|
3月前
|
算法
LeetCode第7题整数反转
该文章介绍了 LeetCode 第 7 题整数反转的解法,通过除 10 取模和乘 10 累加的方式实现整数反转,同时注意边界情况的判断,并总结了通过举例推算发现规律的解题思路。
LeetCode第7题整数反转