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

房产中介 网站模板哈尔滨网站建设 博客

房产中介 网站模板,哈尔滨网站建设 博客,wordpress后台加站点图标,北京路口优化给定一个包含红色、白色和蓝色、共n个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排序。 使用整数0、1和2分布表示红色、白色和蓝色。 必须在不使用库内置sort函数的情况下解决这个问题。 示例1&a…

给定一个包含红色、白色和蓝色、共n个元素的数组nums,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排序。

使用整数0、1和2分布表示红色、白色和蓝色。

必须在不使用库内置sort函数的情况下解决这个问题。

示例1:

输入:nums = [2,0,2,1,1,0]
输出:[0,0,1,1,2,2]

示例2:

输入:nums = [2,0,1]
输出:[0,1,2]

提示:

  • n == nums.length
  • 1 <= n <= 300
  • nums[i] 为 01 或 2
  • 进阶:你能想出一个仅使用常数空间的一趟扫描算法吗?

本题是经典的【荷兰国旗问题】,由计算机科学家 Edsger W. Dijkstra 首先提出。

解题思路:

方法一:单指针

两次遍历:在第一次遍历中,将数组中所有的0交换到数组头部。

                  第二次遍历中,将数组中所有的1交换到头部的0之后。

void swap(int *a,int *b)
{int t = *a;*a = *b,*b = t;
}void sortColors(int *nums,int numsSize)
{int ptr = 0;for(int i=0;i<numsSize;++i){if(nums[i]==0){swap(&nums[i],&nums[ptr]);++ptr;}}for(int i=ptr;i<numsSize;i++){if(nums[i]==1){swap(&nums[i],&nums[ptr]);++ptr;}}
}

 时间复杂度:O(n),其中n是数组nums的长度。

 空间复杂度:O(1)

方法二:双指针

使用两个指针分别来交换0和1

void swap(int *a,int *b)
{int t= *a;*a= *b,*b=t;
}void sortColors(int *nums,int numsSize)
{int p0 = 0,p1=0;for(int i=0;i<numsSize;i++){if(nums[i]==1){swap(&nums[i],&nums[p1]);p1++;}else if(nums[i]==0){swap(&nums[i],&nums[p0]);if(p0<p1)  swap(&nums[i],&nums[p1]);++p0,++p1;}}
}

时间复杂度:O(n),其中n是数组nums的长度

空间复杂度:O(1)

方法三:双指针

左指针P0来交换0

右指针P2来交换2

void swap(int *a,int *b)
{int t=*a;*a=*b,*b=t;
}void sortColors(int *nums,int numsSize)
{int p0=0,p2=numsSize-1;for(int i=0;i<p2;i++){while(i<=p2 && nums[i]==2){swap(&nums[i],&nums[p2]);--p2;}if(nums[i]==0){swap(&nums[i],&nums[p0]);++p0;}}
}

时间复杂度:O(n),其中n是数组nums的长度

空间复杂度:O(1)

方法四:记录0 1 2的个数,对其进行赋值即可。

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

相关文章:

  • 上海知名的网站建设公司营销策略怎么写范文
  • 湛江市工程建设领域网站安徽网络推广推广机构
  • 免费网站建站凡科建站wordpress中英文版如何
  • 福建:网站建设海淀商城网站建设
  • 什么软件可以做网站动图建立一个公司网站
  • 网站关键词在哪里做受欢迎的句容网站建设
  • 做封面的地图网站怀柔网站建设公司
  • 网站挂黑链赚钱wordpress调用外部数据
  • flash网站大全深圳网站优化费用
  • 北京装修平台网站上海物流网站怎么建设
  • 备案个人网站名称东莞企业网站推广
  • 网站备案成功后创造力网站设计
  • 网站建设的公司有哪些方面淘宝上买的网站模板怎么建设网站
  • 用自建网站做外贸找人做网站毕业设计
  • 同仁行业网站建设报价店面设计师是什么
  • 目前网站开发主要有哪些工具百度域名地址查询
  • 做网站配置好了找不到服务器做微博推广的网站吗
  • 网站图片多大作文生成器网站
  • 网站服务器错误品牌策划公司招聘
  • 网站开发语音占比wordpress中文主题站
  • 江苏省城乡与建设厅网站首页广州设计公司排名前十强
  • 鲜花网站模板下载网站图片设置方法
  • 朔州市2018年建设工程网站网站建设 采集
  • 如何查网站是织梦做的网站收录 作用
  • 在线花钱做网站室内设计公司名字起名大全
  • 河源网站推广求一个自己做的网站链接
  • 厦门上网站设计建设wordpress自定义php文件
  • 建平台网站云服务器搭建
  • .net 网站开发 教程郑州网站制作方案报价
  • 护肤品 网站建设策划书网站备案安全吗