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

苏州做网站推广河北疫情最新情况

苏州做网站推广,河北疫情最新情况,找大学生做家教的网站,西安网站建设产品这道题我也没想到特别好的解法,直接用最笨的解法AC了,首先k可能会远超数组nums的大小,这就意味着可能会出现多次无效轮转,因此我们先对次数k进行剪枝,k k % nums.size()来减少不必要的轮转次数,然后我们定…


这道题我也没想到特别好的解法,直接用最笨的解法AC了,首先k可能会远超数组nums的大小,这就意味着可能会出现多次无效轮转,因此我们先对次数k进行剪枝,k = k % nums.size()来减少不必要的轮转次数,然后我们定义一个数组v用于存储从数组后端轮转到前端的元素,例如nums=[1, 2, 3, 4, 5, 6, 7], k = 3,那么元素5, 6, 7就会被轮转到数组的前端,则v就需要将5, 6, 7存储进来,其余元素经过轮转后只是向后挪动了几个位置,这个很好处理。我们利用for循环从后往前遍历,将当前位置的前面k个位置上的元素移动过来即可,当下标<k时,就将v中对应位置的元素复制过来即可。

class Solution {
public:void rotate(vector<int>& nums, int k) {k = k % nums.size();  //剪枝避免多余的轮转vector<int> v;for(int i = nums.size() - k; i < nums.size(); ++i)v.emplace_back(nums[i]);for(int i = nums.size() - 1; i >= 0; --i){if(i >= k) nums[i] = nums[i - k];else nums[i] = v[i];}}
};

看了下灵神的题解,感觉他的思路比较有泛化性,三次反转的思路可以应用在轮转的问题上,主要是看下三次反转为什么可以实现轮转的效果,这里直接看灵神的证明就好了,我觉得还蛮通俗易懂的。

灵神也提到了剪枝的问题,为了避免无效的轮转,我们需要先对k取模再进行反转。

class Solution {
public:void rotate(vector<int>& nums, int k) {k = k % nums.size();  //剪枝避免多余的轮转reverse(nums.begin(), nums.end());  //反转数组中的所有元素reverse(nums.begin(), nums.begin() + k);  //反转前k个元素reverse(nums.begin() + k, nums.end());   //反转后n - k个元素}
};
http://www.dtcms.com/wzjs/216031.html

相关文章:

  • 网站程可以自己做吗google网页版登录入口
  • 用ps怎么做网站导航条怎么做精准引流推广
  • 湖南湘潭网站建设营销型网站建设案例
  • 公司免费建网站网站诊断工具
  • 网站建设zvge百度官方客服
  • 网站建设 上海网免费推广产品平台有哪些
  • 做网页的网站叫什么软件南京百度seo排名优化
  • 济南网站中企动力友情链接买卖
  • 易搭应用快速开发平台百度排名优化软件
  • 做网站图片自动切换seo服务哪家好
  • 做网站的公司怎么样百度手机管家
  • 乐山建设网站网上推广产品哪个网好
  • 全是广告的网站百度云网页版入口
  • 英文网站源码下载百度人工客服电话
  • 网站会员注册系统下载最新网站发布
  • 如何推销网站建设成人馆店精准引流怎么推广
  • 交易网站建设需要学什么百度网盘网站入口
  • 做网站jw100搜索引擎优化关键字
  • 网站客服是做什么的seo资讯网
  • 邢台企业网站建设报价ios微信上的pdf乱码
  • 怎么登录企业网站seo商学院
  • wordpress相关的网站原创代写文章平台
  • wordpress有什么局限性seo是什么的
  • 扬中网络推广网络seo软件
  • 网站前台功能微信营销典型案例
  • 注册网站后怎么建设今日竞彩足球最新比赛结果查询
  • 石家庄自己怎么做网站啊最有效的app推广方式有哪些
  • 目前流行的网页设计风格包括武汉seo 网络推广
  • 荆门城乡建设局网站重庆做seo外包的
  • 动态ip地址做网站网络推广方案的基本思路