leetCode 137. 只出现一次的数字 II(拓展篇) + 模5加法器 + 真值表(数字电路)

news2024/11/18 23:50:00

 leetCode 137. 只出现一次的数字 II 题解可看我的往期文章

leetCode 137. 只出现一次的数字 II + 位运算 + 模3加法器 + 真值表(数字电路) + 有限状态机-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_41987016/article/details/134138112?spm=1001.2014.3001.5501【拓展思考】如果改成除了一个数字出现一次,其余数字均出现 5 次呢?

(一)「同时计算」

 a=ab'c'x'+a'bcx

b=a'bc'x'+a'bcx'+a'b'cx+a'bc'x

c=a'b'cx'+a'bcx'+a'b'c'x+a'bc'x

化简 b 和 c:

b=a'bc'x'+a'bcx'+a'b'cx+a'bc'x

=a'bx'(c'+c)+a'x(b'c+bc')

=a'bx'(c'+c)+a'x(b\bigoplus c)

=a'bx'+a'x(b\bigoplus c)

=a'(bx'+x(b\bigoplus c))

c=a'b'cx'+a'bcx'+a'b'c'x+a'bc'x

=a'b'cx'+a'b'c'x+a'bcx'+a'bc'x

=a'b'(cx'+c'x)+a'b(cx'+c'x)

=a'b'(c\bigoplus x)+a'b(c \bigoplus x)

=a'(b'+b)(c\bigoplus x)

=a'(c\bigoplus x)

#include <iostream>
#include <vector>
using namespace std;

int singleNumber(vector<int> nums) {
	int i, a, b, c, tmpa, tmpb, tmpc;
	a = 0;
	b = 0;
	c = 0;
	for (const int& x : nums) {
		// 第一种
		tmpa = a;
		tmpb = b;
		tmpc = c;
		a = a & ~tmpb & ~tmpc & ~x | ~a & tmpb & tmpc & x;
		b = ~tmpa & b & (~tmpc | tmpc) | ~tmpa & x & (b ^ tmpc);
		c = ~tmpa & (c ^ x);
	}
	return c;
}

int main() {
	vector<int> nums{3,3,3,3,3,2,2,2,2,2,6,6,6,6,6,4,4,4,10,4,4 };
	cout<<"打印结果:"<<singleNumber(nums) << endl;
	return 0;
}

(二)「分别计算」

 发现上面化简c后,式子很简洁:

c=a'(c\bigoplus x) 

b=a'bc'x'+a'bcx'+a'b'c'x+a'bcx

=a'bc'x'+a'b'c'x+a'bcx'+a'bcx

=a'c'(bx'+b'x)+a'bc(x'+x)

=a'c'(b\bigoplus x)+a'bc

a=ab'c'x'+a'b'c'x

=b'c'(ax'+a'x)

=b'c'(a\bigoplus x)

#include <iostream>
#include <vector>
using namespace std;

int singleNumber(vector<int> nums) {
	int i, a, b, c, tmpa, tmpb, tmpc;
	a = 0;
	b = 0;
	c = 0;
	for (const int& x : nums) {
		// 第二种
		c = ~a & (c ^ x);
		b = ~a & ~c & (b ^ x) | ~a & b & c;
		a = ~b & ~c & (a ^ x);
	}
	return c;
}

int main() {
	vector<int> nums{3,3,3,3,3,2,2,2,2,2,6,6,6,6,6,4,4,4,10,4,4 };
	cout<<"打印结果:"<<singleNumber(nums) << endl;
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1155404.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于51单片机智能恒温控制系统设计

**单片机设计介绍&#xff0c;1657【毕设课设】基于51单片机智能恒温控制系统设计&#xff08;仿真&#xff0c;程序&#xff0c;原理图&#xff0c;PCB&#xff09; 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 本设计采用单片…

前度开发面试题

面试题总结 vue页面跳转会经过两个钩子函数beforeEach、afterEach 组见守卫 beforeRouteEnter前置组见守卫 *beforeRouteUpdate更新之前 watch和computed区别 数据没有改变&#xff0c;则 computed 不会重新计算&#xff09;。若没改变&#xff0c;计算属性会立即返回之前缓…

语音驱动数字人唇形模型:SadTalker-Video-Lip-Sync

1 项目介绍 本项目基于SadTalkers实现视频唇形合成的Wav2lip。通过以视频文件方式进行语音驱动生成唇形&#xff0c;设置面部区域可配置的增强方式进行合成唇形&#xff08;人脸&#xff09;区域画面增强&#xff0c;提高生成唇形的清晰度。使用DAIN 插帧的DL算法对生成视频进…

《异常检测——从经典算法到深度学习》23 TimesNet: 用于常规时间序列分析的时间二维变化模型

zz# 《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Don…

信息安全与网络安全的关系

前言 说说信息安全与网络安全的关系 如果你对网络安全入门感兴趣&#xff0c;那么你需要的话可以点击这里&#x1f449;【入门&进阶全套282G学习资源包免费分享&#xff01;】 一、包含和被包含的关系 信息安全包括网络安全&#xff0c;信息安全还包括操作系统安全&…

走进数字孪生街区:城市管理的创新利器

数字孪生街区是现代城市规划和发展的一项重要创新&#xff0c;它结合了数字技术和城市规划&#xff0c;为未来的城市提供了更好的设计、管理和可持续发展的机会。数字孪生街区的兴起将深刻改变我们的城市生活。 数字孪生街区的核心特点 数字孪生街区是一种数字模型&#xff0c…

赋能人才培养丨维视教育亮相2023年全国高校仪器类专业教学研讨会

​ 10月27—29日&#xff0c;为期三天的“2023 年全国高校仪器类专业教学研讨会”于西安市建国饭店成功举办。会议由教育部高等学校仪器类专业教学指导委员会、中国机械工业教育协会仪器科学与技术专业委员会、中国仪器仪表学会教育工作委员会主办&#xff0c;西安理工大学承办…

MySQL - 索引详解以及优化;Explain执行计划

官网文档 MySQL :: MySQL 5.7 Reference Manual :: 8.3 Optimization and Indexes Mysql优化&#xff08;出自官方文档&#xff09; - 第八篇&#xff08;索引优化系列&#xff09; 目录 Mysql优化&#xff08;出自官方文档&#xff09; - 第八篇&#xff08;索引优化系列&…

详解numpy.meshgrid()方法使用

这篇文章主要介绍了详解numpy.meshgrid()方法使用&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值。 一句话解释numpy.meshgrid()——生成网格点坐标矩阵。 网格点是什么&#xff1f;坐标矩阵又是什么鬼&#xff1f;看个…

公司员工的销售微信号如何管理?

在当今数字化时代&#xff0c;微信已成为企业营销的重要工具之一。其中&#xff0c;公司员工的销售微信号更是企业拓展业务、提高品牌知名度的重要途径。然而&#xff0c;如何有效管理这些销售微信号&#xff0c;确保其正常运行并避免潜在风险&#xff0c;已成为许多企业面临的…

IOI车机系统刷机和改包笔记2 - 改包脚本

前言&#xff1a; 最近对雪佛兰改包需求感兴趣的网友很多&#xff0c;大家都遇上了很多奇怪的问题&#xff0c;这里就我自己使用的环境和脚本进行分享&#xff0c;供大家参考。 1. 准备环境 我这里使用Ubuntu系统进行操作 andyandy-vm:~$ sudo lsb_release -a No LSB module…

Web3 React项目Dapp获取智能合约对象

上文Web3 整理React项目 导入Web3 并获取区块链信息中&#xff0c;我们在react搭建的dapp中简单拿到了我们区块链中的账号授权信息 那 我们继续 先终端运行 ganache -d将ganache环境起起来 然后 我们运行 dapp 拿到授权列表 回到上文结束的一个状态 然后 我们发布一下自己的…

Qt 常用方法 获取磁盘总大小、可用空间、文件夹大小 文件大小B KB M G转换

1.通过QFile获取文件大小 注意&#xff1a;返回的是字节个数 QFile file("E:/59.raw");if (file.open(QIODevice::ReadOnly)) {qDebug() << file.size();// byte} else {qDebug() << "文件打开失败&#xff01;";} 通过QFileInfo获取文件大小…

初识CSS层叠样式表

文章目录 CSS介绍CSS层叠样式表1.CSS组成2.CSS语法结构3.注释语法4.引入CSS的多种方式 CSS选择器1.CSS基础选择器2.CSS组成选择器3.分组与嵌套4.CSS属性选择器5.CSS伪类选择器6.CSS伪元素选择器 选择器优先级CSS继承选择器的优先级 CSS样式调节字体样式文本颜色文本属性 边框di…

c++从入门到放弃,小白踩坑记录1

c从入门到放弃,小白踩坑记录1 错误问题描述 没有与这些操作数匹配的运算符操作数类型为std::basic_ostream <char,std::char traits <char > > < < <unknown-type > 错误代码 #include<iostream> int main(void) {std::cout << "…

从小白到精通:揭秘perf工具的全部功能与操作技巧

揭秘perf工具的全部功能与操作技巧 一、引言二、理解perf工具的基本概念三、安装与配置perf工具3.1、不同操作系统的perf工具安装3.2、perf工具的配置选项和环境设置 四、perf工具的常用命令和功能4.1、perf工具的基本命令结构和常用参数4.2、perf工具的常见用法和功能4.3、per…

医学AI智能导诊系统源码

医院智能导诊系统是一款基于人工智能和大数据技术开发的医疗辅助软件&#xff0c;旨在为患者提供更加便捷、精准的医疗服务。 一、什么是智能导诊系统&#xff1f; 智能导诊系统是一种基于人工智能和大数据技术开发的医疗辅助软件&#xff0c;它能够通过对患者的症状、病史等信…

Qt扫盲-QFontDatabase理论

QFontDatabase理论 一、概述二、常用功能 一、概述 QFontDatabase 类提供有关底层窗口系统中可用字体的信息。 这个类最常见的用途是查询数据库中的字体系列列表()以及每个系列可用的 pointSizes() 和 styles()。pointSizes() 的另一种替代方法 是smoothSizes()&#xff0c;它…

使用传感器融合的前方碰撞预警-(Forward Collision Warning Using Sensor Fusion)

这个例子matlab自动驾驶工具箱中关于使用传感器融合的前方碰撞预警-(Forward Collision Warning Using Sensor Fusion)例子&#xff0c;其展示了如何通过融合视觉和雷达传感器的数据来跟踪车辆前方的物体&#xff0c;从而实现前向碰撞预警系统的开发与验证。 1 概述 前方碰撞…

Java体系性能测试进阶必须了解的知识点——Thread Dump

Thread Dump定义 Java Thread dump记录了线程在jvm中的执行信息&#xff0c;可以看成是线程活动的日志。Java线程转储文件有助于分析应用程序和死锁情况中的瓶颈。Thread Dump是非常有用的诊断Java应用问题的工具。它提供了当前活动线程的快照及JVM中所有Java线程的堆栈跟踪信…