【2023】字节跳动 10 日心动计划——第六关

目录

  • 1. 环形链表 II
  • 2. 有序数组中的单一元素

1. 环形链表 II

🔗 原题链接:142. 环形链表 II

用哈希表判重即可。

class Solution {
public:ListNode *detectCycle(ListNode *head) {unordered_set<ListNode*> st;while (head) {if (st.count(head)) return head;st.insert(head);head = head->next;}return nullptr;}
};

2. 有序数组中的单一元素

🔗 原题链接:LCR 070. 有序数组中的单一元素

这里介绍两种做法。

方法一:异或。注意到 x ⊕ x = 0 x\oplus x=0 xx=0,因此 ⊕ i = 1 n n u m s [ i ] \oplus_{i=1}^nnums[i] i=1nnums[i] 就是最终答案。

class Solution {
public:int singleNonDuplicate(vector<int>& nums) {int ans = 0;for (auto& num: nums) ans ^= num;return ans;}
};

方法二:二分。注意到数组是有序的,因此我们可以用二分去处理,时间复杂度可以降至 O ( log ⁡ n ) O(\log n) O(logn)

不妨设只出现一次的元素的下标是 x x x,由题意可知下标 x x x 的左右两边各有偶数个元素,从而 x x x 是偶数,且数组的长度是奇数,不妨设为 n n n

既然要用二分,那我们就需要找到一个性质能够将区间 [ 0 , n − 1 ] [0,n-1] [0,n1] 一分为二。注意到 ∀ i ∈ [ 0 , x − 1 ] \forall i\in[0,x-1] i[0,x1],如果 n u m s [ i ] = n u m s [ i + 1 ] nums[i]=nums[i+1] nums[i]=nums[i+1],那么 i i i 一定是偶数; ∀ i ∈ [ x , n − 1 ] \forall i\in[x,n-1] i[x,n1],如果 n u m s [ i ] = n u m s [ i + 1 ] nums[i]=nums[i+1] nums[i]=nums[i+1],那么 i i i 一定是奇数。

更进一步, ∀ i ∈ [ 0 , n − 1 ] \forall i\in[0,n-1] i[0,n1],如果 i i i 是偶数,我们判断 n u m s [ i ] nums[i] nums[i] n u m s [ i + 1 ] nums[i+1] nums[i+1] 是否相等,如果相等,则 i ∈ [ 0 , x − 1 ] i\in[0,x-1] i[0,x1],否则 i ∈ [ x , n − 1 ] i\in[x,n-1] i[x,n1];如果 i i i 是奇数,则 i − 1 i-1 i1 是偶数,我们判断 n u m s [ i − 1 ] nums[i-1] nums[i1] n u m s [ i ] nums[i] nums[i] 是否相等,如果相等,则 i ∈ [ 0 , x − 1 ] i\in[0,x-1] i[0,x1],否则 i ∈ [ x , n − 1 ] i\in[x,n-1] i[x,n1]

注意到当 i i i 是偶数时, i + 1 = i ⊕ 1 i+1=i\oplus1 i+1=i1,当 i i i 是奇数时, i − 1 = i ⊕ 1 i-1=i\oplus1 i1=i1,从而我们只需要判断 n u m s [ i ] nums[i] nums[i] n u m s [ i ⊕ 1 ] nums[i\oplus 1] nums[i1] 是否相等。条件 n u m s [ i ] ≠ n u m s [ i ⊕ 1 ] nums[i]\neq nums[i\oplus1] nums[i]=nums[i1] 将区间 [ 0 , n − 1 ] [0,n-1] [0,n1] 分成了两部分: [ 0 , x ) [0,x) [0,x) [ x , n − 1 ] [x,n-1] [x,n1],前者不满足这个条件,后者满足这个条件,所以我们可以套用寻找左边界的二分模版。

class Solution {
public:int singleNonDuplicate(vector<int>& nums) {int l = 0, r = nums.size() - 1;while (l < r) {int mid = l + r >> 1;if (nums[mid] != nums[mid ^ 1]) r = mid;else l = mid + 1;}return nums[r];}
};

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

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

相关文章

捕捉时刻:将PDF文件中的图像提取为个性化的瑰宝(从pdf提取图像)

应用场景&#xff1a; 该功能的用途是从PDF文件中提取图像。这在以下情况下可能会很有用&#xff1a; 图片提取和转换&#xff1a;可能需要将PDF文件中的图像提取出来&#xff0c;并保存为单独的图像文件&#xff0c;以便在其他应用程序中使用或进行进一步处理。例如&#xff…

恺英网络宣布:与华为鸿蒙系统展开合作,将开发多款手游

8月5日消息&#xff0c;恺英网络宣布旗下子公司盛和网络参加了华为开发者大会&#xff08;HDC.Together&#xff09;游戏服务论坛&#xff0c;并在华为鸿蒙生态游戏先锋合作启动仪式上进行了亮相。恺英网络表示&#xff0c;将逐步在HarmonyOS上开发多款游戏&#xff0c;利用Har…

JVM 调优

点击下方关注我&#xff0c;然后右上角点击...“设为星标”&#xff0c;就能第一时间收到更新推送啦~~~ JVM调优是一项重要的任务&#xff0c;可以提高Java应用程序的性能和稳定性。掌握JVM调优需要深入了解JVM的工作原理、参数和配置选项&#xff0c;以及历史JVM参数的调整和优…

WMS仓库管理系统研发规划说明

01 产品背景 1.1 背景概述 aboss WMS东南亚仓库管理系统是一个基于BigSeller系统的使用基础上&#xff0c;加上多仓库的解决思路&#xff0c;解决入库业务、出库业务、仓库调拨、库存调拨和虚仓管理等功能&#xff0c;对批次管理、物料对应、库存盘点、质检管理、虚仓管理和即…

QT 杂项笔记qobject_cast

1、使用qobject_cast进行安全类型转换 int main(int argc, char *argv[]) {QApplication a(argc, argv);QObject *btn new QPushButton;qDebug() << btn->metaObject()->className(); //查看类名//使用qobject进行安全类型转换&#xff0c;转换目标为QPushButton…

MYSQL进阶-事务的基础知识

1.什么是数据库事务&#xff1f; 就是把好几个sql语句打包成一个整体执行&#xff0c;要么全部成功&#xff0c;要么全部失败&#xff01;&#xff01;&#xff01; 事务是一个不可分割的数据库操作序列&#xff0c;也是数据库并发控制的基本单位&#xff0c;其执 行的结果必…

秋招算法备战第37天 | 738.单调递增的数字、968.监控二叉树、贪心算法总结

738. 单调递增的数字 - 力扣&#xff08;LeetCode&#xff09; 这个问题是关于找到一个小于或等于给定数字n的最大单调递增数字。 我们可以将数字n转换为字符数组&#xff0c;然后从左到右扫描&#xff0c;寻找第一个违反单调递增条件的位置。一旦找到这样的位置&#xff0c;…

23种设计模式汇总-ing

工厂模式&#xff08;不属于GOF23种设计模式&#xff09; https://blog.csdn.net/m0_63297646/article/details/131941353

clickhouse安装

clickhouse安装 在线安装和离线安装 一、环境准备: 1.检查系统是否支持clickhouse安装 (向量化支持) grep -q sse4_2 /proc/cpuinfo && echo “SSE 4.2 supported” || echo “SSE 4.2 not supported.” 2.下载对应的clickhouse包 复制运行之后,就会将对应的包加入…

webSocket 协议是什么

webSocket 协议是什么&#xff0c;能简述一下吗&#xff1f; websocket 协议 HTML5 带来的新协议&#xff0c;相对于 http&#xff0c;它是一个持久连接的协议&#xff0c;它利用 http 协议完成握手&#xff0c;然后通过 TCP 连接通道发送消息&#xff0c;使用 websocket 协议可…

Android 实现MQTT客户端,用于门禁消息推送

添加MQTT依赖 implementation ‘org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.2’ implementation ‘org.eclipse.paho:org.eclipse.paho.android.service:1.1.1’ 在Manifest清单文件中添加服务 <service android:name"org.eclipse.paho.android.service.Mq…

C#之Winfrom自定义输入框对话框。

如果你需要一个带有输入框的对话框&#xff0c;并在输入完成后接收输入的值&#xff0c;你可以使用自定义窗体来实现。以下是一个示例代码&#xff1a;创建一个继承自 Form 的自定义窗体类&#xff0c;命名为 InputDialogForm&#xff0c;并将窗体上放置一个文本框&#xff08;…

《前端开发 实践之 构建工具的了解》

目录 构建工具的了解Vite 构建工具了解基本使用 构建工具的了解 前端构建工具之一&#xff1a;vite Vite 构建工具了解 vue官方&#xff1b;打包工具&#xff1b;vue 项目本地构建部署工具 类似的前端项目打包工具还有&#xff1a;webpack等等 与其他打包工具区别可能有这几个方…

@FeignClient指定多个url实现负载均衡

C知道回答的如下&#xff1a; 在使用 FeignClient 调用多个 URL 实现负载均衡时&#xff0c;可以使用 Spring Cloud Ribbon 提供的功能来实现。下面是一个示例代码&#xff1a; 首先&#xff0c;在Spring Boot主类上添加EnableFeignClients注解启用Feign Client功能。 Spring…

安捷伦Agilent37719A通讯分析仪

安捷伦Agilent37719A通讯分析仪(131----4587---6435&#xff09; ATM和POS测试能力达到2.5 Gb/s OC-48、OC-48c、OC-12、OC-12c、OC-3c、OC-3、OC-1、STS-3、STS-3c、STS-1测试 保护切换时间测量 所有同步速率高达2.5 Gb/s的串联有效负载 SONET环翻转的全面直通模式操作 全开销…

git代码版本管理

git 文章目录 git基本使用 基本使用 在一台新的电脑上使用git 你要下载安装git, 然后把git的安装路径配到系统环境变量里 然后把这台电脑的.ssh/ id_rsa.pub里的公钥整到github里 然后在github上新建仓库&#xff0c;它会生成一些指令引导上你传本地的代码 之后就可以在终…

Redis | 集群模式

Redis | 集群模式 随着互联网应用规模的不断扩大&#xff0c;单一节点的数据库性能已经无法满足大规模应用的需求。为了提高数据库的性能和可扩展性&#xff0c;分布式数据库成为了解决方案之一。Redis 作为一个高性能的内存数据库&#xff0c;自然也有了自己的分布式部署方式…

【笔记】第94期-冯永吉-《湖仓集一体关键技术解读》-大数据百家讲坛-厦大数据库实验室主办20221022

https://www.bilibili.com/video/BV1714y1j7AU/?spm_id_from333.337.search-card.all.click&vd_sourcefa36a95b3c3fa4f32dd400f8cabddeaf

【数理知识】协方差,随机变量的的协方差,随机变量分别是单个数字和向量时的协方差

序号内容1【数理知识】自由度 degree of freedom 及自由度的计算方法2【数理知识】刚体 rigid body 及刚体的运动3【数理知识】刚体基本运动&#xff0c;平动&#xff0c;转动4【数理知识】向量数乘&#xff0c;内积&#xff0c;外积&#xff0c;matlab代码实现5【数理知识】协…

C#基于OpenCv(OpenCvSharp) 的 fftshift, ifftshift 函数的实现

本文实现基于OpenCv(OpenCvSharp) 的 fftshift, ifftshift 函数。 fftshift 函数将信号频谱的零频分量移动到数组中心, 本质是分别对调一三象限数据。 ifftshift完成相反的操作,本质是二四象限的数据块。 OpenCV中没有这两个函数如果使用需要自己实现。 实现代码如下: …