(二分查找的应用)LeetCode#540. Single Element in a Sorted Array
来源:互联网 发布:数据库部门英语简写 编辑:程序博客网 时间:2024/05/16 08:24
- 题目:一个有序的数组中,只有一个元素只出现一次,其余元素都出现两次,找出出现一次的这个元素(时间复杂度要求为o(logn) 空间复杂度要求为o(1))
- 难度:Medium
- 思路:由于数组是排好序的,自然而然想到二分查找,通过判断nums[mid]的值来调整left和right指针
- 代码:
public class Solution { public int singleNonDuplicate(int[] nums) { if(nums == null || nums.length == 0){ return -1; } int len = nums.length; int left =0; int right = len-1; //while循环的条件一定是小于等于 while(left <= right){ int mid = left + (right-left)/2; //分三种情况:mid=0 mid=len-1 (mid !=0 && mid !=len-1) if(mid != 0 && mid != len-1){ if(nums[mid] != nums[mid-1] && nums[mid] != nums[mid+1]){ return nums[mid]; }else if(nums[mid] == nums[mid+1]){ if(mid%2 == 1){ right = mid-1; }else{ left = mid+2; } }else{ if((mid-1)%2 == 1){ right = mid-2; }else{ left = mid+1; } System.out.println(left + " - " + right); } }else if(mid == 0){ if(nums[mid] == nums[mid+1]){ left = 2; }else{ return nums[mid]; } }else{ if(nums[mid] == nums[mid-1]){ right = len-3; }else{ return nums[mid]; } } } return nums[left+1]; }}
阅读全文
0 0
- (二分查找的应用)LeetCode#540. Single Element in a Sorted Array
- LeetCode (Single Element in a Sorted Array)
- LeetCode | 540. Single Element in a Sorted Array
- {LeetCode} 540. Single Element in a Sorted Array
- LeetCode 540. Single Element in a Sorted Array
- LeetCode 540. Single Element in a Sorted Array
- [LeetCode]540. Single Element in a Sorted Array
- leetcode 540. Single Element in a Sorted Array
- [LeetCode]540. Single Element in a Sorted Array
- leetcode 540. Single Element in a Sorted Array
- leetcode 540. Single Element in a Sorted Array 题解
- leetcode 540. Single Element in a Sorted Array
- leetcode 540. Single Element in a Sorted Array
- 【LeetCode】540. Single Element in a Sorted Array
- [LeetCode] 540. Single Element in a Sorted Array
- LeetCode 540. Single Element in a Sorted Array
- leetcode 540. Single Element in a Sorted Array
- [Leetcode] 540. Single Element in a Sorted Array 解题报告
- 云计算行业投资机会分析
- Restful API的设计规范
- 传微软正在测试一款新手机 Windows Phone不会死亡了?
- 面试的一些问题(2017.6.1)
- Pb学习感悟
- (二分查找的应用)LeetCode#540. Single Element in a Sorted Array
- 欢迎使用CSDN-markdown编辑器
- 在逍遥安卓模拟器上运行android studio项目
- 为java程序制作exe
- 孙正义软银帝国的新投资, 英伟达, ARM, ONEWEB
- エンティティによりデータサービスの作成及びCRUD
- Android Binder学习(三)之defaultServiceManager()的分析
- Leetcode练习<十一> 整数翻转
- 51Nod-1080 两个数的平方和【暴力法】