lettcode:540. Single Element in a Sorted Array(已排序数组中出现一次的数字,其他数字出现两次)
来源:互联网 发布:奥运会标志 知乎 编辑:程序博客网 时间:2024/06/05 17:32
Given a sorted array consisting of only integers where every element appears twice except for one element which appears once. Find this single element that appears only once.Example 1:Input: [1,1,2,3,3,4,4,8,8]Output: 2Example 2:Input: [3,3,7,7,10,11,11]Output: 10Note: Your solution should run in O(log n) time and O(1) space.
不满足题意的解法:
public static int singleNonDuplicate(int[] nums) { if (nums.length==1) { return nums[0]; }else if(nums.length==2) { return 0; }else if(nums.length==3) { if(nums[0]==nums[1]) return nums[2]; else return nums[0]; }else{ int index = 0; while(index<nums.length){ if (nums[index]!=nums[index+1]) { return nums[index]; } index = index + 2; if (index==nums.length-1) { return nums[index]; } } } return 0; }
二分法查找:
int low = 0;
int high = nums.length-1;
while(low < high) { int mid = low + (high - low)/2; if(nums[mid] != nums[mid+1] && nums[mid] != nums[mid-1]) return nums[mid]; else if(nums[mid] == nums[mid+1] && mid % 2 == 0) low = mid+1; else if(nums[mid] == nums[mid-1] && mid % 2 == 1) low = mid+1; else high = mid-1; } return nums[low];
阅读全文
0 0
- lettcode:540. Single Element in a Sorted Array(已排序数组中出现一次的数字,其他数字出现两次)
- 一个数组中有三个数字a、b、c只出现一次,其他数字都出现了两次。请找出三个只出现一次的数字。
- 数组中有两个出现一次的数字,其他数字都出现两次,找出这两个数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。
- 找出数组中只出现一次/两次/三次的数字,而其他数字都出现偶数次
- 一个数组中,除了有两个数字只出现一次外,其他数字都出现两次,求出这两个出现一次的数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。 找出这两个数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。找出这两个数字
- 一个数组中只有两个数字是出现一次,其他所有数字都出现了两次,找出这两个数字
- Single Number --- 找出数组中出现一次的数字
- Single Number III & 数组中只出现一次的数字
- 算法习题61:找出数组中两个只出现一次的数字:一个整型数组里除了两个数字之外,其他的数字都出现了两次
- 数组中有一个数字出现一次,其余数字均出现两次,求出出现一次的那个数字。
- 一个整型数组里除了一个数字之外,其他的数字都出现了两次,找出出现一次的数字
- 442. Find All Duplicates in an Array--找到数组中出现两次的数字
- 安卓音乐播放器(2)
- json文件读取
- Toolbar
- Serializable与serialVersionUID
- 嵌入式系统
- lettcode:540. Single Element in a Sorted Array(已排序数组中出现一次的数字,其他数字出现两次)
- vmware fusion pro 10安装详细步骤
- Servlet笔记
- 【实训】Android部分中期总结
- MapReduce 练习二 找朋友
- LeakCanary使用经验小结
- Ubuntu 16.04 64位 搭建 Node.js 环境
- Python编程:从入门到实践-笔记 《列表》
- Servlet事件监听器