Search in Rotated Sorted Array II 旋转数组(有重复元素)里找数@LeetCode
2013-11-21 10:48
615 查看
与之前的题目代码一样。。
是上一题的followup http://blog.csdn.net/fightforyourdream/article/details/16854537
package Level5;
/**
* Search in Rotated Sorted Array II
*
* Follow up for "Search in Rotated Sorted Array": What if duplicates are
* allowed?
*
* Would this affect the run-time complexity? How and why?
*
* Write a function to determine if a given target is in the array.
*
*/
public class S81 {
public static void main(String[] args) {
}
public static boolean search(int[] A, int target) {
return rec(A, target, 0, A.length-1) != -1;
}
// 递归查找
public static int rec(int[] A, int target, int low, int high) {
if (low > high) { // 没找到的情况
return -1;
}
int mid = low + (high - low) / 2;
if (A[mid] == target) { // 找到了
return mid;
}
int res = rec(A, target, low, mid - 1); // 在左侧查找
if (res == -1) { // 如果左侧没找到,继续在右侧查找
res = rec(A, target, mid + 1, high);
}
return res;
}
}
public class Solution {
public boolean search(int[] A, int target) {
return rec(A, target, 0, A.length-1) != -1;
}
public int rec(int[] A, int target, int low, int high){
if(low > high){
return -1;
}
int mid = low + (high-low)/2;
if(A[mid] == target){
return mid;
}
int pos = rec(A, target, mid+1, high);
if(pos != -1){
return pos;
}else{
return rec(A, target, low, mid-1);
}
}
}
// it ends up the same as sequential search
// We used linear search for this question just to indicate that the
// time complexity of this question is O(n) regardless of binary search is applied or not.
public class Solution {
public boolean search(int[] A, int target) {
for (int i = 0; i < A.length; i ++) {
if (A[i] == target) {
return true;
}
}
return false;
}
}
是上一题的followup http://blog.csdn.net/fightforyourdream/article/details/16854537
package Level5;
/**
* Search in Rotated Sorted Array II
*
* Follow up for "Search in Rotated Sorted Array": What if duplicates are
* allowed?
*
* Would this affect the run-time complexity? How and why?
*
* Write a function to determine if a given target is in the array.
*
*/
public class S81 {
public static void main(String[] args) {
}
public static boolean search(int[] A, int target) {
return rec(A, target, 0, A.length-1) != -1;
}
// 递归查找
public static int rec(int[] A, int target, int low, int high) {
if (low > high) { // 没找到的情况
return -1;
}
int mid = low + (high - low) / 2;
if (A[mid] == target) { // 找到了
return mid;
}
int res = rec(A, target, low, mid - 1); // 在左侧查找
if (res == -1) { // 如果左侧没找到,继续在右侧查找
res = rec(A, target, mid + 1, high);
}
return res;
}
}
public class Solution {
public boolean search(int[] A, int target) {
return rec(A, target, 0, A.length-1) != -1;
}
public int rec(int[] A, int target, int low, int high){
if(low > high){
return -1;
}
int mid = low + (high-low)/2;
if(A[mid] == target){
return mid;
}
int pos = rec(A, target, mid+1, high);
if(pos != -1){
return pos;
}else{
return rec(A, target, low, mid-1);
}
}
}
// it ends up the same as sequential search
// We used linear search for this question just to indicate that the
// time complexity of this question is O(n) regardless of binary search is applied or not.
public class Solution {
public boolean search(int[] A, int target) {
for (int i = 0; i < A.length; i ++) {
if (A[i] == target) {
return true;
}
}
return false;
}
}
相关文章推荐
- 字符串算法——旋转数组中查找目标值(有重复元素)( Search in Rotated Sorted Array II)
- leetcode 7. 在有序可重复数组旋转后搜索 Search in Rotated Sorted Array II
- leetcode 81. Search in Rotated Sorted Array II-旋转数组|二分查找
- 154.leetcode Find Minimum in Rotated Sorted Array II(hard)[排序数组 重复元素 二分查找]
- 字符串算法——查找有序数组旋转后最小值(有重复元素)(Find Minimum in Rotated Sorted Array II)
- 【LeetCode-面试算法经典-Java实现】【081-Search in Rotated Sorted Array II(搜索旋转的排序数组)】
- leetcode 81. Search in Rotated Sorted Array II 旋转数组查找+二分查找
- LeetCode-Search in Rotated Sorted Array II-在旋转数组中搜索-二分查找
- leetCode 81.Search in Rotated Sorted Array II (旋转数组的搜索II) 解题思路和方法
- [Leetcode] search in rotated sorted array ii 搜索旋转有序数组
- leetcode 刷题之路 35 Search in Rotated Sorted Array II (旋转排序数组查找终极版)
- Search in Rotated Sorted Array II 旋转数组二分查找 有重复
- LeetCode Search in Rotated Sorted Array II -- 有重复的旋转序列搜索
- Find Minimum in Rotated Sorted Array II 旋转数组中找最小值(有重复元素) @LeetCode
- LeetCode 81. Search in Rotated Sorted Array II(搜索旋转的数组)
- [LeetCode] Search in Rotated Sorted Array II 在旋转有序数组中搜索之二
- leetcode 题解:Search in Rotated Sorted Array II (旋转已排序数组查找2)
- LeetCode @ Search in Rotated Sorted ArrayII 旋转数组查找II
- [LeetCode] 81. Search in Rotated Sorted Array II 在旋转有序数组中搜索 II
- Leetcode 81. Search in Rotated Sorted Array II 旋转数组查询2 解题报告