当前位置: 首页 > news >正文

太原网站开发团队/网络营销属于哪个专业

太原网站开发团队,网络营销属于哪个专业,网站建设与搜索引擎营销的关系,网站建设方案书下载LeetCode双指针:有序数组中的单一元素 题目描述 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复…

LeetCode双指针:有序数组中的单一元素

题目描述

给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次。

请你找出并返回只出现一次的那个数。

你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复杂度。

示例 1:

输入: nums = [1,1,2,3,3,4,4,8,8]
输出: 2

示例 2:

输入: nums =  [3,3,7,7,10,11,11]
输出: 10

解题思路

由有序数组,以及要求 O(log n) 时间复杂度和 O(1) 空间复杂度得知需使用二分查找,怎么找?考虑到它的总数一定是为奇数,那么就可以从左右两边每次划分后的数量进行查找,怎么判别获得中间值之后知道哪一边是几十个哪一边是偶数个?这个我用的笨方法:举例

  • 1、[1,1,2,3,3,4,4]右指针为6,左指针为0,除以2之后mid为3(奇数)落在第一个3上,根据预想需要调整右指针到第二个3上

  • 2、[1,1,2,2,3,3,4]右指针为6,左指针为0,除以2之后mid为3(奇数)落在第二个2上,根据预想需要调整左指针到第一个2上

  • 3、[1,2,2,3,3]右指针为4,左指针为0,除以2之后mid为2(偶数)落在第二个2上,根据预想需要调整右指针到第二个2上

  • 4、[1,1,2,2,3]右指针为4,左指针为0,除以2之后mid为2(偶数)落在第一个2上,根据预想需要调整左指针到第一个2上

可能此种解释比较麻烦,我也没找到让自己和解的方法,仅代表我自己的理解

接下来就是进行归类,我把需要移动左指针的进行归类(1,3)先进行假设:

    1. 若mid为奇数判断它和它前一个是否相等,相等则左指针调整
    1. 若mid为偶数判断它和它后一个是否相等,相等则左指针调整

带入2,4情况,发现符合,可以试试找规律,自己推出来较为容易理解,上述也可以不知道这一种选择,改变判等的位置,相应更改后边即可

代码

public class BinSearch3 {public int singleNonDuplicate(int[] nums) {int low = 0, high = nums.length - 1;while (low < high) {int mid = (high - low) / 2 + low;//若mid为偶数判断它和它后一个是否相等,相等则左指针调整if (mid%2==0){if (nums[mid] == nums[mid + 1]){low = mid + 1;}else {high = mid;}//若mid为奇数判断它和它前一个是否相等,相等则左指针调整}else {if (nums[mid] == nums[mid - 1]){low = mid + 1;}else {high = mid;}}}return nums[low];}public static void main(String[] args) {BinSearch3 b=new BinSearch3();System.out.println(b.singleNonDuplicate(new int[]{1,1,2,3,3,4,4}));}
}

代码优化

如上,判定奇偶情况代码十分臃肿,冗余,对其进行进一步改进,此时需要了解^的使用

位运算的异或操作符 ^。二进制中,异或有一个有趣的性质,即 a ^ bab 不相同时结果为 1,相同时结果为 0。

1 ^ 3 的结果是 01 ^ 11 = 10,即十进制中的 2

带入上述例子[1,1,2,2,3,3,4]mid=3,为奇数将2和1进行异或 01 ^ 11 = 10即十进制中的 2那么不正是相当于对其进行了减一操作

同理,当mid=2时,01 ^ 10 = 11即十进制中的 3那么不正是相当于对其进行了加一操作

因此对其进行优化后:

public class BinSearch3 {public int singleNonDuplicate(int[] nums) {int low = 0, high = nums.length - 1;while (low < high) {int mid = (high - low) / 2 + low;if (nums[mid] == nums[mid ^ 1]) {low = mid + 1;} else {high = mid;}}return nums[low];}public static void main(String[] args) {BinSearch3 b = new BinSearch3();System.out.println(b.singleNonDuplicate(new int[]{1, 1, 2, 3, 3, 4, 4, 8, 8}));}
}

相关文章:

LeetCode双指针:有序数组中的单一元素

LeetCode双指针&#xff1a;有序数组中的单一元素 题目描述 给你一个仅由整数组成的有序数组&#xff0c;其中每个元素都会出现两次&#xff0c;唯有一个数只会出现一次。 请你找出并返回只出现一次的那个数。 你设计的解决方案必须满足 O(log n) 时间复杂度和 O(1) 空间复…...

熬夜会秃头——Beta冲刺总结随笔

这个作业属于哪个课程2301-计算机学院-软件工程社区-CSDN社区云这个作业要求在哪里团队作业—beta冲刺事后诸葛亮-CSDN社区这个作业的目标总结Beta冲刺团队名称熬夜会秃头团队置顶集合随笔链接熬夜会秃头——Beta冲刺置顶随笔-CSDN社区 目录 一、Beta冲刺开始前设立的任务完成…...

C++函数模板案例

利用函数模板封装一个排序的函数&#xff0c;可以对不同数据类型数组进行排序排序规则从大到小&#xff0c;排序算法为选择排序分别利用char数组和int数组进行测试 #include<iostream> using namespace std;template<class T> void myswap(T& a, T& b) {T…...

同旺科技 USB TO RS-485 定制款适配器--- 拆解(三)

内附链接 1、USB TO RS-485 定制款适配器 ● 支持USB 2.0/3.0接口&#xff0c;并兼容USB 1.1接口&#xff1b; ● 支持USB总线供电&#xff1b; ● 支持Windows系统驱动&#xff0c;包含WIN10 / WIN11系统32 / 64位&#xff1b; ● 支持Windows RT、Linux、Mac OS X、Windo…...

Vue学习计划-Vue2--Vue核心(六)过滤器和自定义指令

1. 过滤器 定义&#xff1a;对要显示的数据进行特定格式转换再显示&#xff08;适用于一些简单逻辑的处理&#xff09;语法&#xff1a; 注册过滤器&#xff1a;Vue.filter(name, callback) 或 new Vue{filters:{}}使用过滤器&#xff1a;{{ xx | 过滤器名 }} 或 v-bind:属性 …...

Codeforces Round 913 (Div. 3) (A-G)

后天就是 I C P C ICPC ICPC杭州站了&#xff0c;今天把之前做的 d i v 3 div3 div3题补一下&#xff0c;打完这场杭州站这赛季除了 E C F i n a l EC\,\,Final ECFinal就结束了&#xff0c;以后应该要多打 c f cf cf比赛练习保持手感&#xff0c;争取下赛季冲一下金牌。 感觉这…...

CSS——sticky定位

1. 大白话解释sticky定位 粘性定位通俗来说&#xff0c;它就是相对定位relative和固定定位fixed的结合体&#xff0c;它的触发过程分为三个阶段 在最近可滚动容器没有触发滑动之前&#xff0c;sticky盒子的表现为相对定位relative【第一阶段】&#xff0c; 但当最近可滚动容…...

Redis hash表源码解析

1、 整体数据结构 链式hash解决hash冲突、采用渐进式hash来完成扩容过程。 /** 哈希表节点*/ typedef struct dictEntry {// 键void *key;// 值union {void *val;uint64_t u64;int64_t s64;} v;// 指向下个哈希表节点&#xff0c;形成链表struct dictEntry *next;} dictEntry;…...

dll动态链接库【C#】

1说明&#xff1a; 在C#中&#xff0c;dll是添加 【类库】生成的。 2添加C#的dll&#xff1a; &#xff08;1&#xff09;在VS中新建一个Windows应用程序项目&#xff0c;并命名为TransferDll。 &#xff08;2&#xff09;打开Windows窗体设计器&#xff0c;从工具箱中为窗体…...

Linux 系统设置cpu频率

source_code: https://github.com/emagii/cpufrequtils cpufreq-set - A small tool which allows to modify cpufreq settings.&#xff08;修改内存频率的工具&#xff09; cpufreq-set allows you to modify cpufreq settings without having to type e.g. “/sys/devices…...

git基本概念

一、版本控制概念 1.1 什么是版本控制 1.1.1 手动管理文件版本 1.1.2 版本控制软件 概念&#xff1a;版本控制软件是一个用来记录文件发生的变化&#xff0c;以便将来查阅特定版本修订情况的系统&#xff0c;有时也叫“版本控制系统”。通俗的理解就是把手工管理文件版本的方…...

多个HTML属性

在HTML中&#xff0c;属性用于提供有关HTML元素的附加信息。在这篇文章中你将学习多个HTML属性&#xff0c;它们可以增强网站的视觉吸引力。 接下来开始吧&#xff01;&#x1f680; Accept 属性 您可以将accept属性与<input>元素&#xff08;仅用于文件类型&#xff…...

基于运算放大器的电压采集电路

一、运算放大器 运放推导的两个重要概念&#xff1a;虚短、虚断。 1、差分放大器 以差分放大器为例进行推导分析。 虚断–运放的"-“端、”“端的引脚电流接近为0&#xff1b; 根据基尔霍夫电流定律可知&#xff1a;iR1iRF&#xff0c;iR2iR3&#xff1b; iR1(Ui1-(V-…...

数字图像处理(实践篇) 十六 基于分水岭算法的图像分割

目录 一 分水岭算法 二 利用OpenCV实现分水岭算法的过程 三 实践 一 分水岭算法 基于任何灰度图像都可以视为地形表面&#xff0c;其中高强度表示山峰和山丘&#xff0c;而低强度表示山谷。首先&#xff0c;开始用不同颜色的水&#xff08;标签&#xff09;填充每个孤立的山…...

快速学习PyQt5的高级自定义控件

Pyqt5相关文章: 快速掌握Pyqt5的三种主窗口 快速掌握Pyqt5的2种弹簧 快速掌握Pyqt5的5种布局 快速弄懂Pyqt5的5种项目视图&#xff08;Item View&#xff09; 快速弄懂Pyqt5的4种项目部件&#xff08;Item Widget&#xff09; 快速掌握Pyqt5的6种按钮 快速掌握Pyqt5的10种容器&…...

Python中读写(解析)JSON文件的深入探究

目录 一、引言 二、如何读取JSON文件 三、如何写入JSON文件 四、如何解析JSON字符串 五、错误处理和异常处理 六、使用第三方库提高效率 七、总结 一、引言 在Python中&#xff0c;我们经常使用JSON&#xff08;JavaScript Object Notation&#xff09;格式来存储和传输…...

我获取股票和期货数据的常用函数

记录一下获取数据所使用的函数&#xff0c;以防止遗忘和方便查找。 # 获取掘金的数据 # 需要打开并登陆掘金终端 def get_data_juejin(symbol"bu2112",start"2021-8-1",end"2021-8-30 23:00:00",frequency"1800s",fields"eob,sy…...

高并发场景下的httpClient使用优化技巧

1. 背景 我们有个业务&#xff0c;会调用其他部门提供的一个基于http的服务&#xff0c;日调用量在千万级别。使用了httpclient来完成业务。之前因为qps上不去&#xff0c;就看了一下业务代码&#xff0c;并做了一些优化&#xff0c;记录在这里。 先对比前后&#xff1a;优化…...

用php上传图片到阿里云oss

如果你想自动创建目录并将文件上传到新的目录下&#xff0c;你可以使用阿里云 OSS 的 createObject 方法来实现。下面是更新后的示例代码&#xff1a; php <?php require_once __DIR__ . /vendor/autoload.php; // 引入 SDKuse OSS\OssClient; use OSS\Core\OssException;…...

服务器适合哪些使用场景_Maizyun

服务器适合哪些使用场景 在当今的数字化时代&#xff0c;服务器作为互联网基础设施的核心组件&#xff0c;被广泛应用于各种场景。本文将探讨服务器适合哪些使用场景。 一、Web服务器 Web服务器是服务器中最常见的一种&#xff0c;用于托管和运行网站。它负责处理来自客户端…...

发布“最强”AI大模型,股价大涨,吊打GPT4的谷歌股票值得投资吗?

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 谷歌在AI领域的最新进展&#xff0c;引发投资者关注 在谷歌-C(GOOGL)谷歌-A&#xff08;GOOG&#xff09;昨日发布了最新的AI大模型Gemini后&#xff0c;其股价就出现了大幅上涨&#xff0c;更是引发了投资者的密切关注&a…...

年度工作总结怎么写?掌握这些年终总结万能公式,让你的报告出彩无比!

光阴似箭&#xff0c;日月如梭&#xff0c;时间总是不疾不徐地向前奔去&#xff0c;转眼就来到了2023年的最后一个月&#xff0c;12月一到&#xff0c;上班族和打工人又要开始忙活工作总结的事情~ 工作总结&#xff0c;不仅是一年工作的回顾&#xff0c;更是未来规划的起点。你…...

常用Nmap脚本

端口扫描类脚本 Nmap是一款非常流行的端口扫描工具&#xff0c;它可以帮助渗透测试工程师识别目标网络上开放的端口&#xff0c;并提供有关这些端口的详细信息。Nmap还提供了一系列基于脚本的功能&#xff0c;这些脚本可以扩展Nmap的功能&#xff0c;使其能够更深入地探测目标网…...

在pom.xml中添加maven依赖,但是类里面import导入的时候报错

问题&#xff1a; Error:(27, 8) java: 类TestKuDo是公共的, 应在名为 TestKuDo.java 的文件中声明 Error:(7, 23) java: 程序包org.apache.kudu不存在 Error:(8, 23) java: 程序包org.apache.kudu不存在 Error:(9, 23) java: 程序包org.apache.kudu不存在 Error:(10, 30) jav…...

【NEON】学习资料汇总

一、资料链接 Guide &#xff1a; http://www.heenes.de/ro/material/arm/DEN0018A_neon_programmers_guide_en.pdf csdn博文1&#xff0c;基础案例&#xff1a; https://blog.csdn.net/kakasxin/article/details/103912832? csdn博文2&#xff0c;内部函数&#xff1a; ht…...

java中ReentrantLock的实现原理是什么?

ReentrantLock 的实现原理主要涉及到两个关键概念&#xff1a;同步器&#xff08;Sync&#xff09;和 AQS&#xff08;AbstractQueuedSynchronizer&#xff0c;抽象队列同步器&#xff09;。 ReentrantLock 使用 AQS 来实现可重入锁的机制。AQS 是 Java 并发包中的一个抽象基类…...

C语言精选——选择题Day40

第一题 1. int a[10] {2,3,5}, 请问a[3]及a[3]之后的数值是&#xff08;&#xff09; A&#xff1a;不确定的数据 B&#xff1a;5 C&#xff1a;0 D&#xff1a;0xf f f f f f f f 答案及解析 C 数组的不完全初始化&#xff0c;会自动把没初始化的部分初始化为0&#xff1b; 第…...

大屏适配方案一scale()

背景 在做大屏可视化项目的时候&#xff0c;一般设计稿会设计成1920 * 1080&#xff0c;但是页面写死1920 * 1080在2k、4k等分辨率的屏幕下是不适配的。 方案一&#xff1a;css3的缩放属性transform以及scale() 在做项目之前我们需要搞清楚客户的数据可视化平台需要在什么屏幕…...

WordPress免费插件大全清单【2023最新】

WordPress已经成为全球范围内最受欢迎的网站建设平台之一。要让您的WordPress网站更具功能性、效率性&#xff0c;并提供卓越的用户体验&#xff0c;插件的选择与使用变得至关重要。 WordPress插件的作用 我们先理解一下插件在WordPress生态系统中的作用。插件是一种能够为Wo…...

支付宝小程序接口传参会默认排序

一&#xff1a;问题 描述&#xff1a;最近项目中的接口都加了签名&#xff0c;在同步到支付宝小程序上时&#xff0c;发现有些接口报错&#xff0c;经过排查&#xff0c;导致报错的原因是因为传参顺序被支付宝小程序默认排序了&#xff0c;比如&#xff1a; 设置的原始参数&a…...