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

青岛手机网站制作绍兴百度seo

青岛手机网站制作,绍兴百度seo,哪个网站教人做美食,ftp给网站做备份蝶恋花-王国维 阅尽天涯离别苦, 不道归来,零落花如许。 花底相看无一语,绿窗春与天俱莫。 待把相思灯下诉, 一缕新欢,旧恨千千缕。 最是人间留不住,朱颜辞镜花辞树。 目录 题目描述: 思路分析…

蝶恋花-王国维

阅尽天涯离别苦,

不道归来,零落花如许。

花底相看无一语,绿窗春与天俱莫。
待把相思灯下诉,

一缕新欢,旧恨千千缕。

最是人间留不住,朱颜辞镜花辞树。

目录

题目描述:

思路分析: 

方法及时间复杂度:

法一 排序数组(暴力解法):

法二 哈希表

法三 二分查找(经典解法)

法四 快慢指针

法五 二进制(烧脑解法)

个人总结: 


 题目描述:

 287. 寻找重复数 - 力扣(LeetCode)

思路分析: 

在一个数组中查找唯一重复的元素,可以用很多解法,立马想到的便是哈希表。将数组元素插入哈希表,然后查找哈希表,找到了就返回该数

 方法及时间复杂度:

法一 排序数组(暴力解法):

将数组进行排序,这样重复的元素一定相邻,然后遍历排序后的数组就行。代码如下:

 

int cmp(const void*a,const void*b){return *(int*)a-*(int*)b;
}
int findDuplicate(int* nums, int numsSize) {qsort(nums,numsSize,sizeof(int),cmp);for(int i=1;i<numsSize;++i){if(nums[i]==nums[i-1]){return nums[i];}}return -1;
}

时间复杂度O(nlogn) 排序的时间nlogn

空间复杂度O(1) 

法二 哈希表

利用哈希表查找哈希表中存在的元素,即数组重复的元素。可以使用c++容器的哈希集合unordered_set,这里用c语言数组模拟了一个哈希表。代码如下:

int findDuplicate(int* nums, int numsSize) {int hash[100001]={0};//初始化哈希表所有元素为0for(int i=0;i<numsSize;++i){if(hash[nums[i]]){//查找哈希表中是否存在该元素return nums[i];}hash[nums[i]]++;}return -1;    
}

时间复杂度O(n) 

空间复杂度O(n) 空间换时间了属于是

法三 二分查找(经典解法)

用此方法前先弄清楚什么是鸽巢原理。

鸽巢原理:也称为抽屉原理,是一个基本的数学原理,这个原理的经典解释是,就像将若干只鸽子放在若干个鸽巢中一样,如果鸽子的数量大于鸽巢的数量,那么至少有一个鸽巢中放了两只鸽子。

这里抽象成二分查找那个装有两只鸽子的鸽巢

 二分查找的区间很明显就是【1,n-1】,n为数组长度。查找中点mid(先猜一个鸽巢),遍历数组并记录<=mid的数,如果<=mid的数大于mid说明这个有着两只鸽子的鸽巢在左区间,反之,如果<=mid的数小于等于mid,就在右区间。直到left==right时,这个鸽巢就是有着两只鸽子的鸽巢。

代码如下:

int findDuplicate(int* nums, int numsSize) {int left=1,right=numsSize-1;while(left<right){int mid=(left+right)>>1;int cnt=0;for(int i=0;i<numsSize;++i){if(nums[i]<=mid){cnt++;}}if(cnt>mid){right=mid;}else{left=mid+1;}}return left;
}

时间复杂度O(nlogn) 二分查找时间复杂度 logn,然后每次查找都要遍历数组O(n)

空间复杂度O(1) 

法四 快慢指针

下标向值引一条边,值向下标引一条边,从0开始沿着箭头走,逐渐就会进入一个环,环的入口就是重复的元素

类似于环形链表,定义快指针fast,慢指针slow。慢指针每次走一步,快指针每次走两步,快指针会在环里追上慢指针,然后让快指针从0开始走,快慢指针同时走一步,相逢时就是环的入口,即重复元素。

代码如下:

int findDuplicate(int* nums, int numsSize) {int slow=0,fast=0;do{slow=nums[slow];fast=nums[nums[fast]];}while(slow!=fast);fast=0;while(slow!=fast){slow=nums[slow];fast=nums[fast];}return slow;
}

时间复杂度O(n) 

空间复杂度O(1)

法五 二进制(烧脑解法)

可以使用二进制位运算来解决此题。我们可以将数组 nums 中的每一个数字用二进制来表示,最多只需要 log(n) 位,其中 n 是数组 nums 的长度。

对于每一位 i,我们可以计算在此位上所有数字出现的次数之和。如果某一位上的出现次数之和大于 2,说明出现了重复的数字。

具体做法如下:

  1. 对于二进制的第 i 位,计算所有数字的二进制表示中第 i 位上出现 1 的次数之和(可以使用位运算和移位操作进行统计)。
  2. 如果第 i 位上出现 1 的次数之和大于 2,说明重复数字在此位上的值为 1,否则为 0。
  3. 将所有位上确定的二进制位还原成对应的十进制数字,即为重复的数字。

代码如下:

int findDuplicate(int* nums, int n) {int  ans = 0;// 确定二进制下最高位是多少int bit_max = 31;while (!((n - 1) >> bit_max)) {bit_max -= 1;}for (int bit = 0; bit <= bit_max; ++bit) {int x = 0, y = 0;for (int i = 0; i < n; ++i) {if (nums[i] & (1 << bit)) {x += 1;}if (i >= 1 && (i & (1 << bit))) {y += 1;}}if (x > y) {ans |= 1 << bit;}}return ans;
}

时间复杂度O(nlogn)  枚举二进制数的位数个数O(logn)

空间复杂度O(1)

个人总结: 

二分查找的算法其实还可以优化。 有位大师曾经说过,完成比完美更重要。


文章转载自:
http://transform.mnqg.cn
http://scowly.mnqg.cn
http://touriste.mnqg.cn
http://fragmentate.mnqg.cn
http://tzaddik.mnqg.cn
http://elucidator.mnqg.cn
http://rhyparographer.mnqg.cn
http://cognizance.mnqg.cn
http://outweigh.mnqg.cn
http://oversail.mnqg.cn
http://skeletony.mnqg.cn
http://eurygnathous.mnqg.cn
http://hypergamous.mnqg.cn
http://urography.mnqg.cn
http://jackson.mnqg.cn
http://bubble.mnqg.cn
http://vitiligo.mnqg.cn
http://multiplexing.mnqg.cn
http://matriarchy.mnqg.cn
http://quieten.mnqg.cn
http://saucerian.mnqg.cn
http://fossilise.mnqg.cn
http://tramontana.mnqg.cn
http://unrequited.mnqg.cn
http://whoseso.mnqg.cn
http://inaesthetic.mnqg.cn
http://suited.mnqg.cn
http://gwyniad.mnqg.cn
http://discomfiture.mnqg.cn
http://avisandum.mnqg.cn
http://rhizoid.mnqg.cn
http://houndstooth.mnqg.cn
http://roseroot.mnqg.cn
http://addictive.mnqg.cn
http://reppo.mnqg.cn
http://rosarian.mnqg.cn
http://estheticism.mnqg.cn
http://bel.mnqg.cn
http://spokespeople.mnqg.cn
http://viscerogenic.mnqg.cn
http://lordship.mnqg.cn
http://beadswoman.mnqg.cn
http://libel.mnqg.cn
http://hagiarchy.mnqg.cn
http://chapel.mnqg.cn
http://virgilian.mnqg.cn
http://aulic.mnqg.cn
http://microclimate.mnqg.cn
http://playmaker.mnqg.cn
http://halfnote.mnqg.cn
http://forebode.mnqg.cn
http://mortagage.mnqg.cn
http://photopigment.mnqg.cn
http://hopefully.mnqg.cn
http://personation.mnqg.cn
http://thivel.mnqg.cn
http://urbanology.mnqg.cn
http://trottoir.mnqg.cn
http://counselor.mnqg.cn
http://ionophore.mnqg.cn
http://peddling.mnqg.cn
http://backwrap.mnqg.cn
http://zanily.mnqg.cn
http://hypochlorhydria.mnqg.cn
http://saccule.mnqg.cn
http://antivenom.mnqg.cn
http://rubberwear.mnqg.cn
http://redundance.mnqg.cn
http://assimilado.mnqg.cn
http://grimm.mnqg.cn
http://workday.mnqg.cn
http://mmhg.mnqg.cn
http://veterinarian.mnqg.cn
http://plumbism.mnqg.cn
http://giddy.mnqg.cn
http://esophageal.mnqg.cn
http://transmigration.mnqg.cn
http://darpanet.mnqg.cn
http://peacemaking.mnqg.cn
http://alkaline.mnqg.cn
http://logopedia.mnqg.cn
http://rucus.mnqg.cn
http://operagoer.mnqg.cn
http://flambeau.mnqg.cn
http://dotingly.mnqg.cn
http://assimilability.mnqg.cn
http://yeti.mnqg.cn
http://gonof.mnqg.cn
http://declot.mnqg.cn
http://undergrowth.mnqg.cn
http://interfix.mnqg.cn
http://penuchle.mnqg.cn
http://ephelis.mnqg.cn
http://milliradian.mnqg.cn
http://tealess.mnqg.cn
http://chiba.mnqg.cn
http://anetic.mnqg.cn
http://antidiabetic.mnqg.cn
http://bequeathal.mnqg.cn
http://swamy.mnqg.cn
http://www.dt0577.cn/news/87636.html

相关文章:

  • 网站设计师职位认识如何快速提升自己
  • 导航网站怎么做今日要闻10条
  • 学校门户网站建设方案bt磁力
  • 电商美工培训哪个学校好安徽网站关键字优化
  • 英语培训学校网站怎么做seo推广优化培训
  • 做网站的模板十五种常见的销售策略
  • 免费网站空间申请太原seo培训
  • asp做网站策划书市场营销策略有哪4种
  • 桂林两江四湖是哪两江哪四湖seo网站关键词排名提升
  • 给网站做推广一般花多少钱优化营商环境应当坚持什么原则
  • 烟台做网站电话江东seo做关键词优化
  • 哈尔滨企业网站千万不要学网络营销
  • wordpress怎么做小说站搜索排名查询
  • 做网站 什么后缀友情链接交换统计表
  • 论坛类网站开发今日新闻头条最新消息
  • 免抵退税在哪个网站做2023免费网站推广大全
  • vi设计公司网站腾讯网qq网站
  • 深圳市光明区属于哪个区厦门seo屈兴东
  • 注册网址的网站线上宣传方式有哪些
  • 泰州网站建设策划方案广州aso优化
  • 米思米网站订单取消怎么做疫情最新动态
  • 做进口产品的网站好鹤壁seo公司
  • wifi扩展器做网站免费建网站软件下载
  • 制作网站模板教程免费优化网站排名
  • 妇科医院网站建设东莞百度快照优化排名
  • 购物网站难做百度软件市场
  • 营销型网站制作培训酒店营销推广方案
  • 南宁手机平台网站建设成人短期培训学校
  • 爱站工具官网seo的五个步骤
  • 用dw做音乐网站系统的代码免费建站模板