【算法】位运算| & ^ ~ -n n-1

【算法】位运算| & ^ ~ -n n-1

目录

1.| 

2.&

3.^

3.1相加和位

3.1.1无进位去和

3.1.2进位去和

4.~

5.-n

6.n-1

位图


1.| 

1占侧|1 占1|0 化原同 | 同 为同


2.&

0占侧&0 占0&1 化原同 & 同 为同


3.^

无进位加法^0 和原同 ^ 同 消0

3.1相加和位

化二进制bit位01进位/无进位相加和的位上查

3.1.1无进位去和

260. 只出现一次的数字 III - 力扣(LeetCode)

给你一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。

你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。

示例 1:

输入:nums = [1,2,1,3,2,5] 输出:[3,5] 解释:[5, 3] 也是有效的答案。

示例 2:

输入:nums = [-1,0] 输出:[-1,0]

示例 3:

输入:nums = [0,1] 输出:[1,0]

提示:

  • 2 <= nums.length <= 3 * 104
  • -231 <= nums[i] <= 231 - 1
  • 除两个只出现一次的整数外,nums 中的其他数字都出现两次
public int[] singleNumber(int[] nums) { int sum = 0; for (int i : nums) sum ^= i; // sum:两个不同数的^和 int tmp1 = sum & -sum; // a和b不同,肯定有一位比特位为1,tmp1:右首1提纯数 // 各只出现1次的 不同的 两个数 和1位 肯定不同,一个是0 一个是1,各分开在 此位为01的 2组中,其余出现2次的 都各成对分布在两组中 和为0,分开来两组消和 两不同数各出 int[] ret = new int[2]; for (int i : nums) { //if((i & tmp1) == 0) if((i & tmp1) != 0) // 右首1这位 为1的 这组,两个不同数的其中一个 这位是1的 分到这组 ret[0] ^= i; else ret[1] ^= i; // 右首1这位 为0的 这组,两个不同数的其中一个 这位是0的 分到这组 } return ret; }

3.1.2进位去和

137. 只出现一次的数字 || - 力扣(LeetCode)

给你一个整数数组 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 中,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次
public int singleNumber(int[] nums) { int ret = 0; for (int i = 0; i < 32; i++) { int sum = 0; for (int x : nums) if (((x >> i & 1) == 1)) sum++; if(sum % 3 == 1) ret |= 1 << i; }return ret; }

4.~

取反


5.-n

右首1 往左取反, n & -n 右首1纯提


6.n-1

右首1 含右取反n & (n-1) 右首1化0


位图

数变量的二进制槽子存bit01 代 对值

面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:

输入: s = "leetcode" 输出: false

示例 2:

输入: s = "abc" 输出: true

限制:

  • 0 <= len(s) <= 100
  • s[i]仅包含小写字母
  • 如果你不使用额外的数据结构,会很加分。
public boolean isUnique(String astr) { // 鸽巢原理优化: if(astr.length() > 26) return false; int bitMap = 0; // 位图数变量 for (int i = 0; i < astr.length(); i++) { int x = astr.charAt(i) - 'a'; // 判断字符是否已存在位图中: if(((bitMap >> x) & 1) == 1) return false; // 把此字符在位图中标记存在: bitMap |= (1 << x); } return true; }

Read more

opencode能否用于爬虫开发?Python异步代码生成实测

opencode能否用于爬虫开发?Python异步代码生成实测 1. OpenCode到底是什么:一个被低估的终端编程助手 很多人第一次听说OpenCode,是在GitHub trending榜上看到它连续霸榜两周——50k Star、MIT协议、纯Go实现,这些标签已经足够吸引眼球。但真正让它在开发者圈子里火起来的,不是数据,而是它解决了一个长期被忽视的痛点:我们每天写代码,却很少有工具真正“懂”我们正在写的项目上下文。 OpenCode不是另一个Web版AI编程界面,也不是又一个IDE插件。它是一个原生终端应用,启动快如闪电,交互像老朋友一样自然。你敲下opencode,几毫秒后,一个干净的TUI界面就出现在眼前:左侧是文件树和会话列表,中间是代码编辑区,右侧是Agent输出面板——没有登录页、没有广告、没有云端同步提示,只有你和代码。 它的核心设计哲学很朴素:代码不该离开你的机器,AI不该成为黑箱,编程辅助必须嵌入真实工作流。所以它用客户端/服务器架构,但默认所有计算都在本地完成;它支持Claude/GPT/Gemini,但更鼓励你接入Ollama里的Qwen3-4B-

By Ne0inhk

Python 连接 MCP Server 全指南

Model Context Protocol (MCP) 正在重塑 LLM 应用与外部系统的交互范式。作为客户端开发者,理解如何高效、稳定地连接 MCP Server 是构建 Agent 的第一步。本文将深入剖析 Python 环境下的连接机制,重点对比 SSE 与 Streamable HTTP 两种传输协议,并提供生产级的代码示例。 1. 传输层协议:SSE vs Streamable HTTP 在 MCP 的架构中,传输层(Transport Layer)负责在 Client 和 Server 之间搬运 JSON-RPC 消息。目前主流的两种远程传输协议各有千秋。 1.1 Server-Sent Events (SSE)

By Ne0inhk
【2026原创】文本情感识别系统~Python+深度学习+textCNN算法+舆情文本+模型训练

【2026原创】文本情感识别系统~Python+深度学习+textCNN算法+舆情文本+模型训练

一、项目介绍 本项目是一个基于Text-CNN深度学习模型的中文文本情感识别Web应用系统。系统采用前后端分离架构,后端使用Flask框架构建RESTful API,深度学习模型采用TensorFlow/Keras实现的Text-CNN卷积神经网络,前端框架支持跨平台访问。 系统核心功能包括用户注册登录、JWT身份认证、中文文本情感分析、批量预测处理以及历史记录管理等。系统使用jieba分词对中文文本进行预处理,通过训练好的Text-CNN模型对文本情感进行二分类判断(积极/消极),并提供直观的置信度可视化展示。系统支持用户角色管理(普通用户和管理员),实现了基于RBAC的权限控制机制,确保数据安全和用户隐私。系统采用SQLite数据库存储用户信息和预测历史,使用Flask-Migrate进行数据库版本管理,保证了系统的可维护性和可扩展性。 二、选题背景与意义 随着互联网技术的快速发展和社交媒体的普及,网络上产生了海量的文本数据,如用户评论、社交媒体帖子、产品评价等。这些文本数据中蕴含着丰富的情感信息,对于企业了解用户需求、改进产品服务、进行舆情监控等方面具有重要价值。传统

By Ne0inhk
Python入门:3.Python的输入和输出格式化

Python入门:3.Python的输入和输出格式化

引言 在 Python 编程中,输入与输出是程序与用户交互的核心部分。而输出格式化更是对程序表达能力的极大增强,可以让结果以清晰、美观且易读的方式呈现给用户。本文将深入探讨 Python 的输入与输出操作,特别是如何使用格式化方法来提升代码质量和可读性。 一、输入操作 Python 提供了简单而强大的输入功能,通过内置函数 input() 可以从用户那里获取字符串形式的输入。以下是一些基本用法和注意事项: 1. 基本用法 name =input("请输入你的名字: ")print(f"你好, {name}!") 2. 转换数据类型 input() 返回的值始终是字符串类型。如果需要整数、浮点数或其他类型,必须显式转换: age =int(input("请输入你的年龄: ")) height =float(input("

By Ne0inhk