540.有序数组中的单一元素(力扣leetcode) 博主可答疑该问题
一、笔记部分
这种含有出现关键字,而且还有有序的时候,一般不会用哈希表,一般是无序统计出现次数才会用哈希表。
直接用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) 博主可答疑该问题相关推荐
- 「 每日一练,快乐水题 」540. 有序数组中的单一元素
✅力扣原题: 力扣链接:540. 有序数组中的单一元素 ✅题目简述: 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次. 请你找出并返回只出现一次的那个数. 你设计的解 ...
- 540. 有序数组中的单一元素 golang
540. 有序数组中的单一元素 golang func singleNonDuplicate(nums []int) int {if len(nums) <= 1 {return nums[0] ...
- LeetCode 540. 有序数组中的单一元素(Single Element in a Sorted Array) 42
540. 有序数组中的单一元素 540. Single Element in a Sorted Array 题目描述 每日一算法2019/6/14Day 42LeetCode540. Single E ...
- 540. 有序数组中的单一元素
540. 有序数组中的单一元素 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2 示例 ...
- LeetCode 540. 有序数组中的单一元素(c语言实现)
540. 有序数组中的单一元素 给你一个仅由整数组成的有序数组,其中每个元素都会出现两次,唯有一个数只会出现一次. 请你找出并返回只出现一次的那个数. 你设计的解决方案必须满足 O(log n) 时间 ...
- 540.有序数组中的单一元素
难度:中等 目录 一.问题描述 二.思路 1.解题思路 1.思路一 2.思路二 2.极端情况判断 3.极端情况解决 三.解题 1.代码实现 1.方法一 2.方法二 2.时间复杂度 and 空间复杂度 ...
- LeetCode 540. 有序数组中的单一元素(位运算二分查找)
1. 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 1: 输入: [1,1,2,3,3,4,4,8,8] 输出: 2示例 2: 输入: [3,3 ...
- LeetCode 540 有序数组中的单一元素
题目描述 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这 个数. 题解 二分查找 代码 class Solution { public:int singleNonD ...
- LeetCode 540.有序数组中的单一元素
目录 题目 示例 C语言代码 逐个异或 正常遍历 题目 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例 输入: nums = [1,1,2,3,3,4, ...
- 【数据结构与算法】之有序数组中的单一元素的算法
一.题目要求 给定一个只包含整数的有序数组,每个元素都会出现两次,唯有一个数只会出现一次,找出这个数. 示例一: 输入: [1,1,2,3,3,4,4,8,8]输出:
最新文章
- ASP.net:添加.net(2.0C#)FCKeditor在线编辑器步骤
- Java Swing 探索(一)LayoutManager
- matlab 基础知识class lt; superclass_name
- 用gameMaker做个小游戏
- Light OJ 1214 Large Division (大数取模)
- MySQL Performance-Schema(一) 配置篇
- 怎样添加、移除、移动、复制、创建和查找节点?
- java 脚本语言交互_Java学习笔记--脚本语言支持API
- mailing list的原理
- spring MVC 的MultipartFile转File读取
- mysql 5.7 mirror_Centos7 Docker离线部署Mysql5.7
- oracle+get+json,jQuery+ajax中getJSON() 用法实例
- android ImageSwitcher案例
- 辩证看待倾向性评分法
- matlab语言与测绘,MATLAB语言及测绘数据处理应用
- proxychains DNS解析失败问题
- Vue组件通信(父传子、子传父、兄弟通信)
- Convex Optimization
- 【并发编程】map 基本用法和常见错误以及如何实现线程安全的map类型
- scp:Mac使用方法(文件上传与下载服务器)