您的位置:首页 > 教育 > 锐评 > 中小企业网络工程建设_上海自贸区注册公司费用_seo权重优化软件_网络营销的十种方法

中小企业网络工程建设_上海自贸区注册公司费用_seo权重优化软件_网络营销的十种方法

2024/10/5 13:08:27 来源:https://blog.csdn.net/weixin_73861555/article/details/142690818  浏览:    关键词:中小企业网络工程建设_上海自贸区注册公司费用_seo权重优化软件_网络营销的十种方法
中小企业网络工程建设_上海自贸区注册公司费用_seo权重优化软件_网络营销的十种方法

目录

两整数之和(medium)

题目解析

讲解算法原理

编写代码

只出现⼀次的数字II(medium)

题目解析

讲解算法原理

编写代码


两整数之和(medium)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

给你两个整数a和b,不使⽤运算符+和-,计算并返回两整数之和。
⽰例1:
输⼊:a=1,b=2
输出:3
⽰例2:
输⼊:a=2,b=3
输出:5
提⽰:
-1000<=a,b<=1000

讲解算法原理

解法(位运算):
算法思路:
◦ 异或 ^ 运算本质是「⽆进位加法」;
◦ 按位与 & 操作能够得到「进位」;
◦ 然后⼀直循环进⾏,直到「进位」变成 0 为⽌。

编写代码

c++算法代码:

class Solution
{
public:int getSum(int a, int b) {while(b != 0){int x = a ^ b; // 先算出⽆进位相加的结果unsigned int carry = (unsigned int)(a & b) << 1; // 算出进位 a = x;b = carry;}return a;}
};

java算法代码:

class Solution {public int getSum(int a, int b) {while(b != 0){int x = a ^ b; // 先算出⽆进位相加的结果 int carry = (a & b) << 1; // 计算进位 a = x;b = carry;}return a;}
}

 

只出现⼀次的数字II(medium)

题目解析

1.题目链接:. - 力扣(LeetCode)

2.题目描述

给你⼀个整数数组nums,除某个元素仅出现⼀次外,其余每个元素都恰出现三次。请你找出并返回那个只出现了⼀次的元素。
你必须设计并实现线性时间复杂度的算法且不使⽤额外空间来解决此问题。
⽰例1:
输⼊:nums=[2,2,3,2]
输出:3
⽰例2:
输⼊:nums=[0,1,0,1,0,1,99]
输出:99
提⽰:
1<=nums.length<=3*104
-231<=nums[i]<=231-1
nums中,除某个元素仅出现⼀次外,其余每个元素都恰出现三次

讲解算法原理

解法(⽐特位计数):
算法思路:
设要找的数位 ret 。
由于整个数组中,需要找的元素只出现了「⼀次」,其余的数都出现的「三次」,因此我们可以根据所有数的「某⼀个⽐特位」的总和 %3 的结果,快速定位到 ret 的「⼀个⽐特位上」的值是0 还是 1 。
这样,我们通过 ret 的每⼀个⽐特位上的值,就可以将 ret 给还原出来。

编写代码

c++算法代码:

class Solution
{
public:
 int singleNumber(vector<int>& nums) 
 {
 int ret = 0;
 for(int i = 0; i < 32; i++) // 依次去修改 ret 中的每⼀位 {
 int sum = 0;
 for(int x : nums) // 计算nums中所有的数的第 i 位的和 if(((x >> i) & 1) == 1)
 sum++;
 sum %= 3;
 if(sum == 1) ret |= 1 << i;
 }
 return ret;
 }
};

java算法代码:

class Solution
{public int singleNumber(int[] nums) {int ret = 0;for(int i = 0; i < 32; i++) // 依次修改 ret 中的每⼀个⽐特位 {int sum = 0;for(int x : nums) // 统计 nums 中所有的数的第 i 位的和 if(((x >> i) & 1) == 1)sum++;sum %= 3;if(sum == 1) ret |= 1 << i;}return ret;}
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com