leetcode 每日一题 34. Search for a Range

来源:互联网 发布:分享文章赚钱系统源码 编辑:程序博客网 时间:2024/05/20 08:01

题目意思是,返回数组中某个数的起始位置。


由于这道题已被臭臭剧透过了,所以做起来只要按照思路写就可以了····


discuss里面看到很多大神用二分搜索之类,震惊!


class Solution {public:    vector<int> searchRange(vector<int>& nums, int target) {        int start=-1;int end=-1;        for(int i=0;i<nums.size();++i){            if(nums[i]==target) {                start=i; break;            }            //else start=-1;        }        for(int i=nums.size()-1;i>=0;--i){            if(nums[i]==target){                end=i; break;            }            //else end=-1;        }        return {start,end};    }};

还可以用二分法进行解答

对于有序的vector数列,找到target对应的begin和end位置,如果数列中不存在target,则返回[-1, -1]。

class Solution {  public:      vector<int> searchRange(vector<int>& nums, int target) {          int left=0;          int right=nums.size()-1;          bool isFind=false;          vector<int> ans;                    while(1){              int dis=right-left;              //cout<<"dis= "<<dis<<endl;              if(dis<=1){                  if(nums[left]==target || nums[right]==target){                      isFind=true;                  }                  break;              }                            int mid=(right-left)/2;              if(nums[left+mid]>target){                  right=left+mid;              }else if(nums[left+mid]<target){                  left=left+mid;              }else{                  isFind=true;                  break;              }          }                    if(isFind){              for(int i=left; i<=right; i++){                  if(nums[i]==target){                      ans.push_back(i);                      break;                  }              }                            for(int i=right; i>=left; i--){                  if(nums[i]==target){                      ans.push_back(i);                      break;                  }              }          }else{              ans.push_back(-1);              ans.push_back(-1);          }                    return ans;      }  };  



0 0
原创粉丝点击