当前位置: 首页 > news >正文

宣传网站制作方案网站内部seo优化包括

宣传网站制作方案,网站内部seo优化包括,成都专业网站设计好公司,PHP网站建设视频免费已知整数数组nums,先按升序排序后,再旋转。旋转k位后,元素分别为nums[k],nums[k1]...nums[0]...nums[k-1]。请查找target 是否存在,如果存在返回所在索引;否则返回-1。假定nums没有重复的元素。 假定排序后的数组为{1…

已知整数数组nums,先按升序排序后,再旋转。旋转k位后,元素分别为nums[k],nums[k+1]...nums[0]...nums[k-1]。请查找target 是否存在,如果存在返回所在索引;否则返回-1。假定nums没有重复的元素。

假定排序后的数组为{1,2,3,4,5}。

旋转0位:不变。

旋转1位:{2,3,4,5,1}

旋转2位:{3,4,5,1,2}

旋转3位:{4,5,1,2,3}

旋转4位:{5,1,2,3,4}

解题思路

观察后,可以得到如下结论:

旋转数组,可以拆分成左右两个升序数组,且左数组的任意元素都大于右数组的任意元素。

分两步:

  • 找到数组的分界线RBegin,[0,RBegin)是左数组,[RBegin,n)是右数组。特殊情况:只有一个升序数组,则RBegin为0,左数组为空。
  • 如果是小于等于nums.back(),在右边找;否则在左边找。升序寻找元素之前已经讲过了,就不累赘了。
            1. 寻找RBegin

nums[mid] < nums.back()

扔掉右边,不扔mid

nums[mid] == nums.back()

扔掉右边,不扔mid

nums[mid] > nums.back()

扔掉左边,扔掉mid

故用左开右闭空间。

代码

class Solution {
public:
    int search(vector<int>& nums, int target) {
        int rBegin = FindRBegin(nums);
        if (target <= nums.back())
        {
            return Find(nums, rBegin, nums.size(), target);
        }
        return Find(nums, 0, rBegin, target);
    }
    int FindRBegin(const vector<int>& nums)
    {
        int left = -1, r = nums.size()-1;//左开右闭
        while (r - left > 1)
        {
            const int mid = left + (r - left) / 2;
            if (nums[mid] <= nums.back())
            {
                r = mid;
            }
            else
            {
                left = mid;
            }
        }
        return r;
    }
    int Find(const vector<int>& nums, int left, int r, int target)
    {
        while (r - left > 1)
        {
            const auto mid = left + (r - left) / 2;
            if (nums[mid] <= target)
            {
                left = mid;
            }
            else
            {
                r = mid;
            }
        }
        return (target == nums[left]) ? left : -1;
    }
};
int main()
{
    vector<int> vNums = {1,2,3,4,6};
    auto res = Solution().search(vNums, 4);
    std::cout << "index:" <<  res;
    if (-1 != res)
    {
        std::cout << " value:" << vNums[res];
    }
}

注意

开发及测试操作系统:Windows10(安装的时候没注意,安装成了英文版)
开发及测试环境:Microsoft Visual Studio 2022  
如果还不明白,请看我的视频;如果看完视频,还是不明白,请下载源码后,直接修改。
 

http://www.hkea.cn/news/774128/

相关文章:

  • 专业做网站的顺德公司网络推广怎么收费
  • php商城网站建设多少钱天津百度seo排名优化
  • 注册网站免费注册insseo关键词优化推广哪家好
  • 深圳房地产网站开发常见的网络营销工具有哪些
  • .net 网站管理系统湖南企业竞价优化首选
  • 南山区住房与建设局官方网站网络赚钱推广
  • wordpress mycred汉化seo引擎搜索入口
  • 在线教育网站用什么做百度搜索的优势
  • 甘肃省住房城乡建设厅网站首页智能建站模板
  • 智能科技网站模板下载地址百度学术论文查重
  • 网站要怎么做才能让360收录推广品牌的策划方案
  • 做网站前景营销课程培训视频
  • 青海做网站广告开户南京seo
  • wordpress写软文赚钱seo快速培训
  • 南宁网站建设接单陕西省人民政府
  • wordpress网站价格seo域名综合查询
  • 支付网站怎么做的网络自动推广软件
  • js做网站统计品牌关键词优化
  • 微信公众号管理平台官网谷歌seo建站
  • 鲜花购物网站源码企业网站营销的优缺点
  • 表白网站制作在线日照网站优化公司
  • 企业网站建设策划书 前言徐州关键词优化排名
  • 一级a做爰片视频网站全国新闻媒体发稿平台
  • 唐山网站建设哪家专业高德北斗导航
  • wordpress 地址 .html企业网站seo贵不贵
  • 提供网站制作公司哪家好网络软文范文
  • 做原型网站枣庄网络推广seo
  • 品牌网站开发设计外贸网站平台
  • 网站做留言板网站推广在线
  • 长春服务好的网络营销seo网站推广的主要目的