【优选算法】(第十九篇)

news2024/10/4 17:15:54

目录

消失的两个数字(hard)

题目解析

讲解算法原理

编写代码

替换所有的问号(easy)

题目解析

讲解算法原理

编写代码


消失的两个数字(hard)

题目解析

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

2.题目描述

给定⼀个数组,包含从1到N所有的整数,但其中缺了两个数字。你能在O(N)时间内只⽤O(1)的空间找到它们吗?
以任意顺序返回这两个数字均可。
⽰例1:
输⼊:[1]
输出:[2,3]
⽰例2:
输⼊:[2,3]
输出:[1,4]
提⽰:
nums.length<=30000

讲解算法原理

解法(位运算):
算法思路:
本题就是268.丢失的数字+260.只出现⼀次的数字III组合起来的题。先将数组中的数和 [1, n + 2] 区间内的所有数「异或」在⼀起,问题就变成了:有两个数出
现了「⼀次」,其余所有的数出现了「两次」。进⽽变成了260.只出现⼀次的数字III这道题。

编写代码

c++算法实现:

class Solution
{
public:
 vector<int> missingTwo(vector<int>& nums) 
 {
 // 1. 将所有的数异或在⼀起
 int tmp = 0;
 for(auto x : nums) tmp ^= x;
 for(int i = 1; i <= nums.size() + 2; i++) tmp ^= i;
 // 2. 找出 a,b 中⽐特位不同的那⼀位
 int diff = 0;
 while(1)
 {
 if(((tmp >> diff) & 1) == 1) break;
 else diff++;
 }
 // 3. 根据 diff 位的不同,将所有的数划分为两类来异或 int a = 0, b = 0;
 for(int x : nums)
 if(((x >> diff) & 1) == 1) b ^= x;
 else a ^= x;
 for(int i = 1; i <= nums.size() + 2; i++)
 if(((i >> diff) & 1) == 1) b ^= i;
 else a ^= i;
 return {a, b};
 }
};

java算法代码:

class Solution
{
 public int[] missingTwo(int[] nums) 
 {
 // 1. 先把所有的数异或在⼀起
 int tmp = 0;
 for(int x : nums) tmp ^= x;
 for(int i = 1; i <= nums.length + 2; i++) tmp ^= i;
 // 2. 找出 a,b 两个数⽐特位不同的那⼀位
 int diff = 0;
 while(true)
 {
 if(((tmp >> diff) & 1) == 1) break;
 else diff++;
 }
 // 3. 将所有的数按照 diff 位不同,分两类异或
 int[] ret = new int[2];
 for(int x : nums)
 if(((x >> diff) & 1) == 1) ret[1] ^= x;
 else ret[0] ^= x;
 for(int i = 1; i <= nums.length + 2; i++)
 if(((i >> diff) & 1) == 1) ret[1] ^= i;
 else ret[0] ^= i;
 return ret;
 }
}

 

替换所有的问号(easy)

题目解析

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

2.题目描述

给你⼀个仅包含⼩写英⽂字⺟和'?'字符的字符串s,请你将所有的'?'转换为若⼲⼩写字⺟,使最终的字符串不包含任何连续重复的字符。
注意:你不能修改⾮'?'字符。题⽬测试⽤例保证除'?'字符之外,不存在连续重复的字符。在完成所有转换(可能⽆需转换)后返回最终的字符串。如果有多个解决⽅案,请返回其中任何⼀
个。可以证明,在给定的约束条件下,答案总是存在的。
⽰例1:
输⼊:s="?zs"输出:"azs"
解释:该⽰例共有25种解决⽅案,从"azs"到"yzs"都是符合题⽬要求的。只有"z"是⽆效的修改,因为字符串"zzs"中有连续重复的两个'z'。
⽰例2:
输⼊:s="ubv?w"输出:"ubvaw"
解释:该⽰例共有24种解决⽅案,只有替换成"v"和"w"不符合题⽬要求。因为"ubvvw"和"ubvww"都包含连续重复的字符。

提⽰:
1<=s.length<=100
s仅包含⼩写英⽂字⺟和'?'字符

讲解算法原理

解法(模拟):
算法思路:
纯模拟。从前往后遍历整个字符串,找到问号之后,就⽤ a ~ z 的每⼀个字符去尝试替换即可。

编写代码

c++算法原理:

class Solution
{
public:
 string modifyString(string s) 
 {
 int n = s.size();
 for(int i = 0; i < n; i++)
 {
 if(s[i] == '?') // 替换
 {
 for(char ch = 'a'; ch <= 'z'; ch++)
 {
 if((i == 0 || ch != s[i - 1]) && (i == n - 1 || ch != s[i 
+ 1]))
 {
 s[i] = ch;
 break;
 }
 }
 }
 }
 return s;
 }
};

java算法原理:

class Solution
{
 public String modifyString(String ss) 
 {
 char[] s = ss.toCharArray();
 int n = s.length;
 for(int i = 0; i < n; i++)
 {
 if(s[i] == '?') // 替换
 {
 for(char ch = 'a'; ch <= 'z'; ch++)
 {
 if((i == 0 || ch != s[i - 1]) && (i == n - 1 || ch != s[i 
+ 1]))
 {
 s[i] = ch;
 break;
 }
 }
 }
 }
 return String.valueOf(s);
 }
}

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

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

相关文章

【技术分析】嘉楠科技SoC芯片K230

概述 K230是嘉楠科技Kendryte系列AIoT芯片中的最新一代SoC芯片&#xff0c;该芯片采用全新的多异构单元加速计算架构&#xff0c;集成的玄铁C908具有2个高能效RISCV计算核心&#xff0c;内置新一代KPU&#xff08;Knowledge Process Unit&#xff09;智能计算单元&#xff0c;…

【cpp/c++ summary 工具】 Hunter 报错 CMake hunter error: Unexpected MSVC_VERSION

原因&#xff1a;使用的MSVC编译器版本较高&#xff0c;而Hunter版本较低&#xff0c;可在https://github.com/cpp-pm/hunter/releases配置高版本Hunter # HunterGate( # URL "https://github.com/cpp-pm/hunter/archive/v0.23.297.tar.gz" # SHA1 "33…

【解决办法】git clone报错unable to access ‘xxx‘: SSL certificate problem:

使用git clone 时报错unable to access xxx: SSL certificate problem: 这个报错通常是由于SSL证书问题引起的。通常可以按照以下步骤进行排查&#xff1a; 检查网络连接&#xff1a;确保你的网络连接正常&#xff0c;可以访问互联网。尝试使用其他网站或工具测试网络连接是否正…

netty之Netty集群部署实现跨服务端通信的落地方案

前言 在一些小型用户体量的socket服务内&#xff0c;仅部署单台机器就可以满足业务需求。但当遇到一些中大型用户体量的服务时&#xff0c;就需要考虑讲Netty按照集群方式部署&#xff0c;以更好的满足业务诉求。但Netty部署集群后都会遇到跨服务端怎么通信&#xff0c;也就是有…

【PS】删除自定义形状,添加自定义形状

删除自定义形状 在这里选择删除形状为灰色的时候&#xff0c;是不能直接删除的&#xff0c;需要打开形状窗口后才能删除。 找到形状窗口&#xff0c;打开它 然后就可以删除形状了。 导入形状 右键&#xff0c;导入形状 选择你要导入的形状包&#xff08;我这个是某宝买…

Stable Diffusion绘画 | 来训练属于自己的模型:秋叶训练器使用

花了不少时间搜索尝试&#xff0c;都没有找到解决上一篇文章遗留问题的解决方案&#xff0c;导致无法使用 cybertronfurnace 这个工具来完成炼丹&#xff0c;看不到炼丹效果。 但考虑到&#xff0c;以后还是要训练自己的模型&#xff0c; 于是决定放弃 cybertronfurnace&…

数据结构与算法——Java实现 28.二叉树的锯齿形层序遍历

努力成为你想要成为的那种人&#xff0c;去奔赴你想要的生活 —— 24.10.4 103. 二叉树的锯齿形层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往右&#xff0c;再从右往左进行下一层遍历&#xff0c;以此类推&#xff…

【Unity】双摄像机叠加渲染

一、前言 之前我在做我的一个Unity项目的时候&#xff0c;需要绘制场景网格的功能&#xff0c;于是就用到了UnityEngine.GL这个图形库来绘制&#xff0c;然后我发现绘制的网格线是渲染在UI之后的&#xff0c;也就是说绘制出来的图形会遮盖在UI上面&#xff0c;也就导致一旦这些…

第十八章(数据在内存中的储存)

1. 整数在内存中的存储 2. ⼤⼩端字节序和字节序判断 3. 浮点数在内存中的存储 我本将心向明月&#xff0c;奈何明月照沟渠正文开始 一、.整数在内存中的储存 整数的2进制的表示方法有三种 1.原码 2.反码 3.补码 这里在第十章我们有详细讲解&#xff0c;有需要的同学可以自…

网络编程项目框架内容

基于TCP的云端书阅管理系统 通过网络实现图书借阅网站&#xff0c;包括服务器与客户端&#xff0c;客户端与服务器是基于TCP连接。 客户端描述&#xff1a;客户端运行会与服务器端进行连接&#xff0c;连接成功后&#xff0c;显示注册登录界面。此时&#xff0c;客户端可以选…

算法: FriendShip - Kruskal+并查集判环

题目 A-Friendship_2024.5.7 (nowcoder.com) 思路分析 求所有符合题意情况的最大值中的最小值&#xff1b;符合题意是指保证图的连通性。那么贪心思路&#xff0c;将所有已存在的关系和可能存在的关系存储起来&#xff0c;利用Kruskal贪心算法每次取权值最小的且不构成回路的…

从零开始讲PCIe(2)——PCI总线传输模型与机制

一、前言 在之前的内容中&#xff0c;我们已经对PCI有了一些基本的认识&#xff0c;我们了解了PCI的一般架构&#xff0c;标准传输周期等相关的内容&#xff0c;接下来我们会进一步了解PCI具体的传输模型和传输机制。 二、PCI传输模型 PCI一共有三种数据传输模型&#xff0c;分…

Windows安装ollama和AnythingLLM

1、Ollama安装部署 1&#xff09;安装ollama 官网下载&#xff1a;https://ollama.com/download&#xff0c;很慢 阿里云盘下载&#xff1a;https://www.alipan.com/s/jiwVVjc7eYb 提取码: ft90 百度云盘下载&#xff1a;https://pan.baidu.com/s/1o1OcY0FkycxMpZ7Ho8_5oA?…

Python-初识Python

前言&#xff1a;在这篇博客当中&#xff0c;我们将步入Python知识的殿堂&#xff0c;Python以其简单、易学、开发效率高在近些年的发展可谓是迅猛&#xff0c;在许多领域都可以见到它的场景&#xff0c;例如&#xff1a;人工智能/机器学习、大数据开发、后端开发等都会用到。 …

仕考网:公务员国考有三不限岗位吗?

国家公务员考试中的“三不限”岗位&#xff0c;即不限制专业背景、政治面貌、基层工作经验的职位。在国考中&#xff0c;是有的但是数量比较少。 这些岗位主要集中在省级及以下单位&#xff0c;以民航空警和铁路公安为主。其中&#xff0c;有一半的职位是面向四项目人员&#…

基于STM32的蓝牙音乐播放器设计

引言 本项目将基于STM32微控制器设计一个简易的蓝牙音乐播放器&#xff0c;通过蓝牙模块接收手机的音乐信号&#xff0c;并使用音频解码芯片播放音乐。该项目展示了STM32在嵌入式音频处理与蓝牙通信方面的应用。 环境准备 1. 硬件设备 STM32F103C8T6 开发板&#xff08;或其…

基于Java,SpringBoot,Vue智慧校园健康驿站体检论坛请假管理系统

摘要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#xf…

持续更新:当前最好用的AI 编程工具,Cursor 编程指南

本文持续更新&#xff0c;敬请期待更多内容。 文章目录 这一次&#xff0c;AI真懂你的代码关注该关注的&#xff0c;忽略该忽略的1. 创建.cursorignore文件2. 重新索引代码库 参考资料 这一次&#xff0c;AI真懂你的代码 如果你偶尔关注一些AI编程相关的内容&#xff0c;想必你…

介绍多环境开发-分组(springboot-profile)

背景 在使用 Spring Boot 进行开发时&#xff0c;多环境配置是一项非常常见的需求。通常&#xff0c;我们会在开发、测试、生产等不同环境下部署同一个应用程序&#xff0c;而这些环境可能需要不同的配置&#xff0c;例如数据库连接、日志级别等。Spring Boot 通过 profile&am…

python交互式命令时如何清除

在交互模式中使用Python&#xff0c;如果要清屏&#xff0c;可以import os&#xff0c;通过os.system()来调用系统命令clear或者cls来实现清屏。 [python] view plain copy print? >>> import os >>> os.system(clear) 但是此时shell中的状态是&#xff1a;…