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

用wordpress做音乐网站HTMT超链接网站怎么做

用wordpress做音乐网站,HTMT超链接网站怎么做,建设管理网站,wordpress主题 响应式1,跳跃游戏II 题目连接:45. 跳跃游戏 II - 力扣(LeetCode) 【题目描述】 在给定的一个nums数组中,nums[i]表示从当前i位置最多可以向后跳跃nums[i]个位置。问跳跃到最后 数组最后一个元素的最少跳跃次数?…

1,跳跃游戏II

题目连接:45. 跳跃游戏 II - 力扣(LeetCode)

【题目描述】

在给定的一个nums数组中,nums[i]表示从当前i位置最多可以向后跳跃nums[i]个位置。问跳跃到最后 数组最后一个元素的最少跳跃次数???

【贪心】

首先,需要注意的是,题目的意思是最远跳跃nums[i]个位置,而不是必须跳跃mun[i]个位置。

以一个例子来看:nums=[2,3,1,1,4,2,6,7,1]。nums[0]=2,所以可以从0位置最多向后跳跃2个位置,所以最远可以跳跃到1,也可以选择跳跃到3。 


nums=[2,3,1,1,4,2,6,7,1]。还是以这个数组为例。

第一次的起跳位置是数组下标为0的位置。经过一次跳跃之后,可以到达3或者1,此时的位置是第二次起跳位置,也就是说第二次起跳的位置是3或者1。同理,假设3为第二次起跳的位置 ,那么可以到达【1,1,4】,假设1为第二次起跳的位置,可以到达【1】。两者取并集,可以得到从第二次起跳位置起跳,可以跳跃到的区间。后面也是同理,配图:

从上图我们可以发现二次起跳的位置【3,1】和三次起跳的位置【1,1,4】这两个区间存在交集。而题目中求的是最少跳跃次数,所以可以通过二次跳跃可以到达的位置,不会选择跳跃三次。 


那么如何判断跳跃到数组的最后一个元素了?对于每一个跳跃区间,我们可以使用两个变量来维护这两个区间的开始位置和结束位置【left,right】,比如 对于二次起跳的位置(上图中蓝色部分的线),对应的区间就是【1,2】。当right超出数组的长度,就表示可以跳跃到数组的结尾位置了。注意:这个【left,right】区间存储的是下标,不是元素。


维护【left,right】区间,从上图可以发现,第三次起跳的【left,right】,其中left可以通过上一次起跳的【left,right】的right+1得来。而right就需要遍历第二次起跳的【left,right】找出最远的距离。

【代码】

只需遍历数组一遍,时间复杂度为O(N)

class Solution {
public:int jump(vector<int>& nums) {int n=nums.size();int maxpos=0;//存储下一次起跳的最远位置,也就是下一个rightint ret=0;//记录最终结果int left=0,right=0;while(left<=right){if(maxpos>=n-1)//已经可以跳跃到数组结尾{return ret;}//遍历当前[left,right],更新下一次的[left,right]for(int i=left;i<=right;i++){maxpos=max(maxpos,nums[i]+i);}left=right+1;right=maxpos;ret++;//跳跃次数++}return ret;}
};

2,跳跃游戏I

题目连接:55. 跳跃游戏 - 力扣(LeetCode)

本题与上体思路一模一样,只是返回值修改以下即可。

class Solution {
public:bool canJump(vector<int>& nums) {//贪心int n=nums.size();int left=0,right=0,ret=0;int maxPos=0;//记录下一个最远跳到的位置while(left<=right){if(maxPos>=n-1)return true;//跟新maxPosfor(int i=left;i<=right;i++)maxPos=max(maxPos,nums[i]+i);//更新区间left=right+1;right=maxPos;ret++;}return false;}
};

 3,加油站

题目连接:134. 加油站 - 力扣(LeetCode)

【题目描述】

题目简单的理解,n个加油站,每个加油站有gas[i]升汽油。刚开始汽车的油箱为空。从第i个加油站行驶到第i+1个加油站,需要消耗cost[i]升汽油。问,是否存在一个加油站,是该汽车可以环绕n个加油占一周,回到起始加油站,返回该加油站的下标。

【暴力枚举算法】

 我们可以枚举每个加油站位置,看看是否可以环绕一周,回到起始位置。

从第i个加油站到达第i+1个加油站,需要消耗cost[i]升汽油,而第i个加油站可以获得gas[i]升汽油,所以汽车要想从第i个加油站行驶到第i+1个加油站,必须保证gas[i]>=cos[i]。

我们可以将gas[i]-cos[i]的值保存于一个diff数组中(这个数组不需要定义出来,只是为了好理解),如果从第i个加油站开始走,那么mixup满足gas[i]>=cos[i],也就是diff[i]>=0。


以题目中给的示例为例:

当我们选中一个位置作为起点,从当前位置,再次枚举步数(0~n-),以为可能下标会越界,所以需要在对数组长度取模。 

【暴力代码】(会超时)

时间复杂度O(N^2)

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int n = gas.size();//枚举起点for(int i=0;i<n;i++){int rest=0;//剩余汽油for(int step=0;step<n;step++)//枚举步数{int index=(step+i)%n;//求出走step后的下标rest+=gas[index]-cost[index];if(rest<0)break;}if(rest>=0)return i;}return -1;}
};

 

【贪心优化】

 

 

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int n = gas.size();//枚举起点for(int i=0;i<n;i++){int rest=0;//剩余汽油int step=0;for(;step<n;step++)//枚举步数{int index=(step+i)%n;//求出走step后的下标rest+=gas[index]-cost[index];if(rest<0)break;}if(rest>=0)return i;i+=step;//循环会完成+1工作}return -1;}
};

http://www.dtcms.com/wzjs/602981.html

相关文章:

  • 手机wap网站建站系统app 制作公司
  • c语言做网站后台服务自建网站服务器备案
  • 做游戏ppt下载网站有哪些内容高密住房和城乡建设厅网站
  • 网站建设各个模块的功能在线设计网站大全
  • 最经典最常用的网站推广方式网页微信怎么登陆
  • 上海建设电动车官方网站cms开发语言有哪些
  • 做电子商务网站建设工资多少钱建站快车代理平台系统
  • 建设网站远达天津网站备案时间
  • 网站推广方案范例诸城公司做网站
  • 上海电信网站备案商城网站开发用什么框架
  • 怎样做咨询网站沈丘网站建设
  • 网站配色网wordpress 充值记录
  • 网站建设侵权重庆电子工程
  • 瑞典网站后缀搜索引擎营销广告
  • 西安网站建设 盈科手机网站的模板下载软件
  • 专业制作存单wordpress优化记录
  • 微网站外链建设股份有限公司
  • 怎样申请个人网站天津seo优化公司
  • wordpress多色主题天津外贸seo推广
  • 一站式做网站系统蒙牛企业网站建设规划书
  • 惠阳住房与规划建设局网站百度竞价排名是什么意思
  • wordpress安装语言设置中文乱码谷歌seo网站建设
  • 长治网站制作教程游戏网站建设的策划方案
  • 漳州模板网站建设秦皇岛酒店网站设计
  • 体育直播网站制作开发购物网站功能模块图
  • 伍佰亿网站备案收费网站设计制作哪家服务好
  • thinkphp手机网站模板wordpress标签链接分类目录
  • 手机网站吧乐亭中关村建站快车
  • 给wordpress语音朗读seo推广方式
  • 网站的设计与开发的图片纺织厂网站模板