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

怎么做网站打赏/湖北疫情最新消息

怎么做网站打赏,湖北疫情最新消息,专业做家具的网站有哪些,湖南网站开发公司电话注&#xff1a; 题目&#xff1a; 给你一个整数数组 nums&#xff0c;将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。 你可以假设所有输入数组都可以得到满足题目要求的结果。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,1,1,6,4] 输出&am…

注:

题目:
给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。

你可以假设所有输入数组都可以得到满足题目要求的结果。

示例 1:
输入:nums = [1,5,1,1,6,4]
输出:[1,6,1,5,1,4]
解释:[1,4,1,5,1,6] 同样是符合题目要求的结果,可以被判题程序接受。
示例 2:
输入:nums = [1,3,2,2,3,1]
输出:[2,3,1,3,1,2]

提示:
1 <= nums.length <= 5 * 104
0 <= nums[i] <= 5000
题目数据保证,对于给定的输入 nums ,总能产生满足题目要求的结果

题解:
首先,我们可以很容易想到一种简单的解法:将数组进行排序,然后从中间位置进行等分(如果数组长度为奇数,则将中间的元素分到前面),然后将两个数组进行穿插。

例如:
对于数组[1, 5, 2, 4, 3],我们将其排序,得到[1, 2, 3, 4, 5],然后将其分割为[1, 2, 3]和[4, 5],对两个数组进行穿插,得到[1, 4, 2, 5, 3]。

但是这一解法有一个问题,例如,对于数组[1, 2, 2, 3],按照这种做法求得的结果仍为[1, 2, 2, 3]。如果题目不要求各元素严格大于或小于相邻元素,即,只要求nums[0] <= nums[1] >= nums[2] <= nums[3]…,那么这一解法是符合要求的,但题目要求元素相互严格大于或小于,那么需要稍微做一点改进。

为了方便阅读,我们在下文中定义较小的子数组为数组A,较大的子数组为数组B。显然,出现上述现象是因为nums中存在重复元素。实际上,由于穿插之后,相邻元素必来自不同子数组,所以A或B内部出现重复元素是不会出现上述现象的。所以,出现上述情况其实是因为数组A和数组B出现了相同元素,我们用r来表示这一元素。而且我们可以很容易发现,如果A和B都存在r,那么r一定是A的最大值,B的最小值,这意味着r一定出现在A的尾部,B的头部。其实,如果这一数字的个数较少,不会出现这一现象,只有当这一数字个数达到原数组元素总数的一半,才会在穿插后的出现在相邻位置。以下举几个例子进行形象地说明:

例如,对于数组[1,1,2,2,3,3],分割为[1,1,2]和[2,3,3],虽然A和B都出现了2,但穿插后为[1,2,1,3,2,3],满足要求。
而如果2的个数再多一些,即[1,1,2,2,2,3],分割为[1,1,2]和[2,2,3],最终结果为[1,2,1,2,2,3],来自A的2和来自B的2出现在了相邻位置。

出现这一问题是因为重复数在A和B中的位置决定的,因为r在A尾部,B头部,所以如果r个数太多(大于等于(length(nums) + 1)/2),就可能在穿插后相邻。要解决这一问题,我们需要使A的r和B的r在穿插后尽可能分开。一种可行的办法是将A和B反序:

例如,对于数组[1,1,2,2,2,3],分割为[1,1,2]和[2,2,3],分别反序后得到[2, 1, 1]和[3, 2, 2],此时2在A头部,B尾部,穿插后就不会发生相邻了。

当然,这只能解决r的个数等于(length(nums) + 1)/2的情况,如果r的个数大于(length(nums) + 1)/2,还是会出现相邻。但实际上,这种情况是不存在有效解的,也就是说,这种数组对于本题来说是非法的。

复杂度分析
时间复杂度:O(NlogN)。
空间复杂度:O(N)。

class Solution {
public:void wiggleSort(vector<int>& nums) {sort(nums.begin(),nums.end(),less<int>());vector<int> temp=nums;int size=nums.size()-1;for(int i=1;i<nums.size();i+=2){nums[i]=temp[size];size--;}for(int i=0;i<nums.size();i+=2){nums[i]=temp[size];size--;}return ;}
};
http://www.jmfq.cn/news/4844215.html

相关文章:

  • 上海心橙科技网站建设/市场营销策略有哪些
  • 武汉新闻网站/网站推广软件费用是多少
  • wordpress悬浮音乐播放器/网站seo诊断技巧
  • 泉州企业建站系统/推广平台免费b2b网站大全
  • wordpress用户关注/seo咨询河北
  • 网站建设前期工作/免费建立个人网站申请
  • 政府网站系统/百度收录提交申请
  • 四川住房建设厅网站首页/西安网站关键词优化费用
  • 公司做网站的费用怎么记账/公司网站制作网络公司
  • one dirve做网站/网站建设的技术支持
  • 蝌蚪窝一个释放做网站/建立公司网站需要多少钱
  • 郑州网站建设网络公司/关键词在线挖掘网站
  • 简单大气网站源码/天堂tv在线观看
  • 广州疫情防控发布会/北京网络seo经理
  • 深圳服装网站建设/免费网站大全下载
  • 代理东莞网站制作公司/seo就业
  • 1cpu0.5g服务器用来做网站/如何让百度搜索到自己的网站
  • 花木企业网站源码/百度引擎搜索入口
  • 哪个网站上门做护肤/搜什么关键词能搜到好片
  • 程序员做图网站/北京seo网站优化培训
  • 做网站遇到的问题及解决方法/足球排名最新排名世界
  • 做暧视频网站大全/网络营销企业是什么
  • 钓鱼网站建设/专业营销策划团队
  • 东坑仿做网站/快速收录网
  • 什么网站做兼职可靠/合肥网站seo推广
  • 政府部门门户网站建设方案/企业网站模板下载
  • 辽宁网站建设学校/爱站查询
  • wordpress做排行榜单/优化seo培训班
  • 景观设计公司排名前十强/聊城seo优化
  • 注册外贸公司的流程及费用/亚马逊seo关键词优化软件