zoukankan      html  css  js  c++  java
  • Leetcode系列-Search in Rotated Sorted Array

      做Leetcode题有一段时间了,但都是断断续续的,到现在才做了30题左右,感觉对自己来说还是有点难度的。希望自己能继续坚持下去,在校招前能解决超过一百题吧。

      其实这些题就是用来训练你的解题思路的,做多了的话,才能在校招时面对编程题目,能立即有一个解题的流程,知道这是哪一种类型的题目,一般用什么样的套路,思路会很清晰,比如基础的字符串,数组操作会用到一些排序算法,还有一类是算法思想的题目,比如DP(动态规划),分治,回溯法,贪心等等,多练,多思考,多总结。

      ‘庖丁解牛,恢恢乎游刃有余’,无他,唯手熟尔!希望自己通过训练,也能在算法这一块做到手熟。。。

      言归正题。

      今天正好做到这道题,仔细一看竟然是今年参加的去哪儿网实习生招聘的第一道算法题,因此把他拿来记录一下。

    具体信息如下:

    Search in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand.

    (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

    You are given a target value to search. If found in the array return its index, otherwise return -1.

    You may assume no duplicate exists in the array.

    我的方案如下:

     1 class Solution {
     2 public:
     3     int binarySearch(int *arr,int beg,int end,int target){
     4         if (beg <= end){
     5             int mid = (beg+end)/2;
     6             if (arr[mid] < target)
     7                 return binarySearch(arr,mid+1,end,target);
     8             if (arr[mid] > target)
     9                 return binarySearch(arr,beg,mid-1,target);
    10             if (arr[mid] == target)
    11                 return mid;
    12         }
    13         return -1;
    14     }
    15 
    16     int search(int A[], int n, int target) {
    17         if (n==0)
    18             return -1;
    19         if (n==1)
    20             if (A[0] != target)
    21                 return -1;
    22             else
    23                 return 0;
    24         int down = 0;
    25         for (int i=1;i<n;i++)
    26             if (A[i]<A[i-1])
    27                 down = i;
    28         int n1 = binarySearch(A,0,down-1,target);
    29         int n2 = binarySearch(A,down,n-1,target);
    30         if (n1 == -1)
    31             if (n2 == -1)
    32                 return -1;
    33             else
    34                 return n2;
    35         else
    36             return n1;
    37     }
    38 };

    Ac过。

     

  • 相关阅读:
    iOS小知识点大杂烩
    iOS 生成本地验证码
    iOS RTMP 视频直播开发笔记(1) – 采集摄像头图像
    Mac之vim普通命令使用
    工作日记(九):完整项目开发之编写前端vue代码
    HTTP常用请求头与请求体实例
    工作日记(八):完整项目开发之学习sql与学习http报文
    工作日记(七):完整项目开发之前端vue框架的搭建
    工作日记(六):完整项目开发之springboot无法启动的坑
    工作日记(五):完整项目开发之编码开始
  • 原文地址:https://www.cnblogs.com/lxiao/p/4359309.html
Copyright © 2011-2022 走看看