一、笔记部分

这种含有出现关键字,而且还有有序的时候,一般不会用哈希表,一般是无序统计出现次数才会用哈希表。

直接用HashMap 取搞就没有意思了,那么有序就根本没有用用到了。

中间的数要么和左边相等,要么和右边相等。看左右边元素没有什么用,因为你进行了第一次比较后不知道往那边走了,看元素是否等于中间元素,里面的if条件无法写,因为根本单个元素到底在那边数组我们是不知道。

因为用二分法一定要知道找到中间元素元素后,通过if判断我们要知道我们到底下一步走那一边,不知道的话,还不如直接遍历。二分法只要是通过判断中间元素从而知道我们走那边。

我上面的想法能找出一对来,已经走了一大步了。取出一对后,剩下两个数组包含的数量肯定一个为奇数、一个为偶数,这样就会找的出来了,尽量不要用旁边的两个元素和中间元素比较,因为数组比较越多越容易越界。

正确思路:

1.把握好只有一个奇数,其他都是成对,那么数组肯定是奇数,但是数组是从0开始,所以首位和末尾都是偶数,取中间值的时候有偶数有奇数,偶数下标就是成对的第一位是数,所以如果中间索引是奇数那么就要-1,变成偶数判断与后一个数是否相等。

2.如果相等,说明单位数在后面,如果不相等,说明单位数在前面闭区间(因为可能就是这个单位数)

所以二分查找这些区间的l、r是非常灵活的,根据你自己的要求选择

为什么最后重合了是单个元素?

因为每次确定了中间元素,然后选择数组,都是选择的是奇数数组,所以最后肯定只剩下一个元素。最后一个分组肯是三个。

二、二分法类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112572853

三、各种类型的高频面试题汇总:

https://blog.csdn.net/qq_40262372/article/details/112556249

四、如有疑问可加QQ群讨论:725936761 博主免费答疑

540.有序数组中的单一元素(力扣leetcode) 博主可答疑该问题相关推荐

  1. 「 每日一练,快乐水题 」540. 有序数组中的单一元素

    ✅力扣原题: 力扣链接:540. 有序数组中的单一元素 ✅题目简述: 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次. 请你找出并返回只出现一次的那个数. 你设计的解 ...

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

    540. 有序数组中的单一元素 golang func singleNonDuplicate(nums []int) int {if len(nums) <= 1 {return nums[0] ...

  3. LeetCode 540. 有序数组中的单一元素(Single Element in a Sorted Array) 42

    540. 有序数组中的单一元素 540. Single Element in a Sorted Array 题目描述 每日一算法2019/6/14Day 42LeetCode540. Single E ...

  4. 540. 有序数组中的单一元素

    540. 有序数组中的单一元素 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2 示例 ...

  5. LeetCode 540. 有序数组中的单一元素(c语言实现)

    540. 有序数组中的单一元素 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次. 请你找出并返回只出现一次的那个数. 你设计的解决方案必须满足 O(log n) 时间 ...

  6. 540.有序数组中的单一元素

    难度:中等 目录 一.问题描述 二.思路 1.解题思路 1.思路一 2.思路二 2.极端情况判断 3.极端情况解决 三.解题 1.代码实现 1.方法一 2.方法二 2.时间复杂度 and 空间复杂度 ...

  7. LeetCode 540. 有序数组中的单一元素(位运算二分查找)

    1. 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2示例 2: 输入: [3,3 ...

  8. LeetCode 540 有序数组中的单一元素

    题目描述 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这 个数. 题解 二分查找 代码 class Solution { public:int singleNonD ...

  9. LeetCode 540.有序数组中的单一元素

    目录 题目 示例 C语言代码 逐个异或 正常遍历 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 输入: nums = [1,1,2,3,3,4, ...

  10. 【数据结构与算法】之有序数组中的单一元素的算法

    一.题目要求 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例一: 输入: [1,1,2,3,3,4,4,8,8]输出:

最新文章

  1. ASP.net:添加.net(2.0C#)FCKeditor在线编辑器步骤
  2. Java Swing 探索(一)LayoutManager
  3. matlab 基础知识class lt; superclass_name
  4. 用gameMaker做个小游戏
  5. Light OJ 1214 Large Division (大数取模)
  6. MySQL Performance-Schema(一) 配置篇
  7. 怎样添加、移除、移动、复制、创建和查找节点?
  8. java 脚本语言交互_Java学习笔记--脚本语言支持API
  9. mailing list的原理
  10. spring MVC 的MultipartFile转File读取
  11. mysql 5.7 mirror_Centos7 Docker离线部署Mysql5.7
  12. oracle+get+json,jQuery+ajax中getJSON() 用法实例
  13. android ImageSwitcher案例
  14. 辩证看待倾向性评分法
  15. matlab语言与测绘,MATLAB语言及测绘数据处理应用
  16. proxychains DNS解析失败问题
  17. Vue组件通信(父传子、子传父、兄弟通信)
  18. Convex Optimization
  19. 【并发编程】map 基本用法和常见错误以及如何实现线程安全的map类型
  20. scp:Mac使用方法(文件上传与下载服务器)

热门文章

  1. 旧金山散记(一):第一次在美国打车
  2. java三大特性之—封装
  3. 修改wordpress的footer内容
  4. OpenCV-特征提取与检测(03、自定义角点检测器)
  5. 诺基亚n1支持java功能_关于诺基亚N1你必须要了解这10个问题!
  6. catv系统主要有哪三部分组成_光纤通信系统的组成与特点
  7. springboot开启缓存_springBoot与缓存使用
  8. linux密钥链接失败的原因,linux中ssh密钥登录失败问题解决办法
  9. java 40期_【40期】说一下线程池内部工作原理
  10. micro macro 区别和详解