位运算算法【1】

在这里插入图片描述

文章目录

    • 🍊面试题 01.01. 判定字符是否唯一
      • 🥭题目
      • 🍑算法原理
        • 🥝解法一:哈希表
        • 🥝解法二:位图
      • 🥑代码实现
    • 🌽268. 丢失的数字
      • 🥬题目
      • 🍄算法原理
        • 🍞解法一:哈希表
        • 🍞解法二:高斯求和
        • 🍞解法三:位运算(异或运算的运算律)
      • 🥕代码实现

🍊面试题 01.01. 判定字符是否唯一

🥭题目

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

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

示例 1:

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

示例 2:

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

限制:

  • 0 <= len(s) <= 100
  • s[i]仅包含小写字母
  • 如果你不使用额外的数据结构,会很加分。

🍑算法原理

🥝解法一:哈希表

这里直接用哈希表,我们遍历整个字符串,如果不在哈希表里面,将这个字符丢进去,如果在直接返回false即可,如果到末尾还没有,则返回true

时间复杂度为O(N),由于全是小写字符,只想要创建一个hash[26]即可,空间复杂度为O(1)

🥝解法二:位图

在解法一的基础上,我们还能继续优化一下,借助位图的比特位来标记信息

image-20231128225741814

这样就能用一个int变量做到上面26个int变量做的的事情

在此基础上,还能继续优化一下,即鸽巢原理,由于小写的字符总共才26个,所有当这个字符串长度超过26的时候,必然有重复的

🥑代码实现

class Solution {
public:bool isUnique(string astr){if(astr.size()>26)  return false;int bitMap = 0;for(auto ch : astr){int i = ch-'a'; //'a'的ASCII值为97if((bitMap>>i)&1 == 1) return false;bitMap |= 1<<i; }return true;}
};

运行结果:

image-20231128230433021

🌽268. 丢失的数字

🥬题目

题目链接:268. 丢失的数字 - 力扣(LeetCode)

给定一个包含 [0, n]n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。

示例 1:

输入:nums = [3,0,1]
输出:2
解释:n = 3,因为有 3 个数字,所以所有的数字都在范围 [0,3] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 2:

输入:nums = [0,1]
输出:2
解释:n = 2,因为有 2 个数字,所以所有的数字都在范围 [0,2] 内。2 是丢失的数字,因为它没有出现在 nums 中。

示例 3:

输入:nums = [9,6,4,2,3,5,7,0,1]
输出:8
解释:n = 9,因为有 9 个数字,所以所有的数字都在范围 [0,9] 内。8 是丢失的数字,因为它没有出现在 nums 中。

示例 4:

输入:nums = [0]
输出:1
解释:n = 1,因为有 1 个数字,所以所有的数字都在范围 [0,1] 内。1 是丢失的数字,因为它没有出现在 nums 中。

提示:

  • n == nums.length
  • 1 <= n <= 104
  • 0 <= nums[i] <= n
  • nums 中的所有数字都 独一无二

**进阶:**你能否实现线性时间复杂度、仅使用额外常数空间的算法解决此问题?

🍄算法原理

这里给的是[0,n],但是只给了n个,所以这个是缺少一个数字的。

🍞解法一:哈希表

我们创建一个n+1大小的哈希表,从前往后遍历数组,然后看哪个数字没有被标记。

🍞解法二:高斯求和

用数学公式求[0,n]的和,然后减去这个数组的和,即可得到缺少的数字,这个相比哈希表,空间复杂度为O(1)

ret = (0+n)*(n+1)/2 - sum[nums];
🍞解法三:位运算(异或运算的运算律)

异或运算中有一个消消乐,相同的数字异或的结果为0,所以最后剩下的就是缺少的数字

🥕代码实现

高斯求和:

class Solution {
public:int missingNumber(vector<int>& nums) {int n = nums.size();int ret = (0+n)*(n+1)/2;for(auto e:nums)ret-=e;return ret;}
};

异或运算律:

class Solution {
public:int missingNumber(vector<int>& nums) {int ret = 0;for(auto e:nums)ret^=e;for(int i=0;i<=nums.size();i++)ret^=i;return ret;}
};

运行结果:

image-20231128233939745

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

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

相关文章

Leetcode—2336.无限集中的最小数字【中等】

2023每日刷题&#xff08;四十四&#xff09; Leetcode—2336.无限集中的最小数字 实现代码 class SmallestInfiniteSet {set<int> s; public:SmallestInfiniteSet() {for(int i 1; i < 1000; i) {s.insert(i);}}int popSmallest() {int res *s.begin();s.erase(s…

webpack如何处理css

一、准备工作 新建目录 添加样式 .word {color: red; } index.js添加dom元素&#xff0c;添加一个css word import ./css/index.css;const div document.createElement("div"); div.innerText "hello word!!!"; div.className "word"; do…

Unity安装

DAY1 下载Unity 打开Unity3D官网&#xff0c;下载Unity Hub&#xff0c;管理Unity的软件。链接https://unity.cn/releases (可能需要注册账号&#xff0c;就正常注册登录即可) 如果是新版的hub&#xff0c;可能长下面这个样子&#xff0c;还是英文的&#xff0c;点击圆圈的设…

基于振弦式轴力计和采集仪的安全监测解决方案

基于振弦式轴力计和采集仪的安全监测解决方案 振弦式轴力计是一种测量结构物轴向力的设备&#xff0c;通过测量结构物上的振弦振幅变化&#xff0c;可以确定结构物轴向力的大小。采集仪是一种用于采集和存储传感器数据的设备&#xff0c;通常与振弦式轴力计一起使用&#xff0c…

41.0/查询/sql注入安全问题以及解决方式。

41.1. 回顾 1. jdbc&#xff1a;[java database connection] java连接数据库 2. 完成了增删改操作。 [1]加载驱动。Class.forName("com.mysql.cj.jdbc.Driver"); [2]获取连接对象: Connection connDriverManager.getConnection(url,user,pass); url: jdb…

利用sql语句来统计用户登录数据的实践

目录 1 基本数据情况2 统计每个用户每个月登录次数3 将日期按月显示在列上4 总结 1 基本数据情况 当需要对用户登录情况进行统计时&#xff0c;SQL是一个非常强大的工具。通过SQL&#xff0c;可以轻松地从数据库中提取和汇总数据&#xff0c;并以适合分析和报告的方式进行呈现…

构建强大的接口自动化测试框架:Pytest实践指南!

一. 背景 Pytest目前已经成为Python系自动化测试必学必备的一个框架&#xff0c;网上也有很多的文章讲述相关的知识。最近自己也抽时间梳理了一份pytest接口自动化测试框架&#xff0c;因此准备写文章记录一下&#xff0c;做到尽量简单通俗易懂&#xff0c;当然前提是基本的py…

技巧-PyCharm中Debug和Run对训练的影响和实验测试

简介 在训练深度学习模型时&#xff0c;使用PyCharm的Debug模式和Run模式对训练模型的耗时会有一些区别。 Debug模式&#xff1a;Debug模式在训练模型时&#xff0c;会对每一行代码进行监视&#xff0c;这使得CPU的利用率相对较高。由于需要逐步执行、断点调试、查看变量值等操…

[C++][原创]VSCode C++怎么让运行的时候弹出cmd窗口,而不是在VSCode调试输出

VSCode C怎么让运行的时候弹出cmd窗口&#xff0c;而不是在VSCode控制台调试输出&#xff1f;其实在VSCode控制台调试输出是非常不错的&#xff0c;我很喜欢&#xff0c;但是偏偏有小白就喜欢每次运行弹个cmd窗口&#xff0c;这样的人也是少见。没办法&#xff0c;为了满足这样…

二分查找算法详解

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

华为ospf和isis双点双向路由重分布的次优路径和环路终极解决方案

r5上直接导入直连路由 r3和r2进行双点双向路由重分布 查看R3去往R5产生了次优路径&#xff1a; 因为是R2先互相引入的isis和ospf&#xff0c;所以R3会产生次优路径&#xff0c;如果是R3先相互引入ospf和isis&#xff0c;那就是R2去R5会产生次优路径&#xff0c;而R3本身不会。…

基于若依的ruoyi-nbcio流程管理系统增加流程节点配置(三)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 这一节主要是对每个流程节点的字段规则设置与操作规则设置&#xff0c;目前也是只针对自定义业务表单。 1、…

元素在盒模型居中的情况

在CSS中&#xff0c;有多种方法可以使元素在盒模型中居中。下面列举了一些常见的情况和相应的解决方案&#xff1a; 水平居中&#xff1a;文本 text-align: center; 适用于&#xff1a;行内元素和文本。 水平居中&#xff1a;块级元素 margin-left: auto; margin-right: auto…

Day35| Leetcode 860. 柠檬水找零 Leetcode 406. 根据身高重建队列 Leetcode 452. 用最少数量的箭引爆气球

Leetcode 860. 柠檬水找零 题目链接 860 柠檬水找零 本题目比较简单&#xff0c;我一开始并没有看出有需要贪心的地方&#xff0c;看了一下解析&#xff1a; 局部最优&#xff1a;遇到账单20&#xff0c;优先消耗美元10&#xff0c;完成本次找零。全局最优&#xff1a;完成…

c语言编程题经典100例——(36~40例)

1&#xff0c;实现快速排序算法。 下面是用C语言实现快速排序算法的示例代码&#xff1a; #include <stdio.h> void swap(int* a, int* b) { int t *a; *a *b; *b t; } int partition(int arr[], int low, int high) { int pivot arr[high]; int i (low …

如何设置带有密码的excel只读模式?

Excel只读模式大家都不陌生&#xff0c;那大家知道带有密码的只读模式吗&#xff1f;今天给大家分享如何设置带有密码的只读模式。 打开excel文件&#xff0c;将文件进行【另存为】设置&#xff0c;然后停留在保存路径的界面中&#xff0c;我们点击下面的工具 – 常规选项 在常…

浅谈数据资产价值评估

加gzh"大数据食铁兽“&#xff0c;了解更多大数据信息 数据是资产&#xff0c;是当前时代大背景下毋庸置疑的。随着科技的发展&#xff0c;数据的重要性越来越受到人们的关注。对于企业来说&#xff0c;数据是非常重要的资产&#xff0c;它可以为企业提供决策依据、增加市…

20天GMV超过百万美金!桌下迷你跑步机在TikTok Shop美国站热销

上周总GMV达到1.59亿美元&#xff0c;达到历史新高&#xff0c;是美国站自开通以来首次单周出单达到亿级&#xff1b;日均出单1660万美元&#xff0c;单日出单最高达2820万美元&#xff1b; 截至11月19日&#xff0c;GMV Top 5 的商品分类排名依次为&#xff1a;美妆个护、女士…

【论文复现】RoSteALS: Robust Steganography using Autoencoder Latent Space-2023-CVPR

代码链接&#xff1a;https://github.com/TuBui/RoSteALS 一定要按照dockerfile&#xff0c;requirements.txt和requirements2.txt配置环境 需要补充的库&#xff1a; pip安装&#xff1a;omegaconf slack slackclient bchlib (0.14.0版本) einops imagenet-c conda安装&…

4、stable diffusion

github 安装anaconda环境 conda env create -f environment.yaml conda activate ldm安装依赖 conda install pytorch1.12.1 torchvision0.13.1 torchaudio0.12.1 cudatoolkit11.3 -c pytorch pip install transformers4.19.2 diffusers invisible-watermark pip install -e…