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

wordpress详情页选择模板北京seo设计公司

wordpress详情页选择模板,北京seo设计公司,石家庄百度提升优化,阿里云企业邮箱怎么申请😘个人主页:Cx330❀ 👀个人简介:一个正在努力奋斗逆天改命的二本觉悟生 📖个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》 📒个人名言:算法能力不是一蹴而就,而…

😘个人主页:@Cx330❀

👀个人简介:一个正在努力奋斗逆天改命的二本觉悟生

📖个人专栏:《C语言》《LeetCode刷题集》《数据结构-初阶》

📒个人名言:算法能力不是一蹴而就,而是通过一朝一夕的坚持刷题而积累的!

前言:今天我们继续练习三道排序的算法题,会给大家附上题目链接、题意、思路以及代码实现等,希望大家可以一天一道算法题来提升算法能力


目录

题目一:第三大的数

题目链接:

题意:

思路:

代码实现:

复杂度分析:

题目二:分发饼干

题目链接:

题意:

思路:

代码实现:

复杂度分析:

题目三:最长和谐子序列

题目链接:

题意:

思路:

代码实现:

复杂度分析:


题目一:第三大的数

题目链接:

414.第三大的数-力扣(LeetCode)

题意:

给你一个非空数组,返回此数组中第三大的数,若不存在,则返回数组中最大的数

思路:

先进行qsort排序,使数组变成一个降序数组,因为数组中的元素可能会重复,所以我们就要判断,数组重复的情况,我们可以定义个flag,i从1开始遍历,判断相邻两个数不相等就让flag++,当flag==2时,第三个大的数就出现了

代码实现:

int cmp(const void*a,const void*b)
{return *(int*)a<*(int*)b;//降序排列
}
int thirdMax(int* nums, int numsSize) 
{qsort(nums,numsSize,sizeof(int),cmp);int flag=0;for(int i=1;i<numsSize;i++){//不同的数flag才++等到flag==2时说明数组里至少三个数不相同//此时flag==2刚好是第三个大的数if(nums[i]!=nums[i-1]&&++flag==2){return nums[i];}}return nums[0];//没找到就返回最大的数
}

复杂度分析:

时间复杂度:O(Nlogn)


题目二:分发饼干

题目链接:

455.分发饼干-力扣(LeetCode)

题意:

一个孩子只能分到一块饼干,每个孩子都有一个胃口值,当你的饼干尺寸达到孩子的胃口值,孩子才满足,目标是尽可能让多的孩子满足

思路:

先利用qsort排序对s和g数组进行排序,定义一个计数器count来记录能满足孩子胃口的饼干个数,i作为s数组的下标,j作为g数组的下标,遍历s数组,i<sSize && j<gSize来保证两个数组不会越界,遍历中进行判断,如果饼干尺寸不满足第一个孩子的胃口(最小的胃口),就让数组s继续往后遍历,此时因为不满足if条件,j不会++,这样就能保证数组s一直找到满足孩子胃口的饼干为止,如果遍历结束还找不到,就返回count的值,因为没有一次满足,所以count还是为0的,如果饼干尺寸大于或者等于孩子胃口,那么就让count++,j++,继续找下一个孩子的胃口,此时i++找下一个饼干的尺寸,因为1个孩子对应1个饼干,s和g两个数组都继续向后走,再在s数组里找满足孩子胃口的饼干即可

代码实现:

int cmp(const void*a,const void*b)
{return *(int*)a-*(int*)b;
}
int findContentChildren(int* g, int gSize, int* s, int sSize) 
{qsort(g,gSize,sizeof(g[0]),cmp);qsort(s,sSize,sizeof(s[0]),cmp);    int count=0;int i=0,j=0;for(i=0;i<sSize&&j<gSize;i++){if(s[i]>=g[j]){count++;j++;}}return count;
}

复杂度分析:

时间复杂度:O(Nlogn)


题目三:最长和谐子序列

题目链接:

594.最长和谐子序列-力扣(LeetCode)

题意:

子序列:数组中最大值-最小值=1的子数组,要求:不改变原数组的顺序返回最长的子序列

思路:

排序:我们只需要依次找到相邻两个连续相同元素的子序列,检查该这两个子序列的元素的之差是否为 1
双指针滑窗:
begin 指向第一个连续相同元素的子序列的第一个元素,end 指向相邻的第二个连续相同元素的子序列的末尾元素,如果满足二者的元素之差为 1,则当前的和谐子序列的长度即为两个子序列的长度之和,等于end−begin+1。

循环:初始定义一个ret来计算长度,这里用到一个函数fmax(x,y)函数,来计算x和y的最大值,当循环结束返回的就是长度的最大值

代码实现:

int cmp(const void*a,const void*b)
{return *(int*)a-*(int*)b;
}
int findLHS(int* nums, int numsSize) 
{qsort(nums,numsSize,sizeof(nums[0]),cmp);int begin=0;int ret=0;for(int end=0;end<numsSize;end++){while(nums[end]-nums[begin]>1){begin++;}      if(nums[end]-nums[begin]==1){ret=fmax(ret,end-begin+1);}}return ret;
}

复杂度分析:

时间复杂度:O(Nlogn)


往期回顾:

【LeetCode刷题集】--排序(一)
【LeetCode刷题集】--排序(二)

总结:这篇博客给大家讲解了三个排序算法题,其中涉及了fmax()函数,每天积累一个小知识点,就可以逐渐解决一些难题,算法能力不是一蹴而就,而是通过一朝一夕的坚持刷题而积累的!如果文章对你有帮助的话,欢迎评论,点赞,收藏加关注,感谢大家的支持🌹🌹🌹

http://www.dtcms.com/a/546924.html

相关文章:

  • 商城网站建设最好的公司青白江建设局网站
  • 网站建设实验原理做网站制作课程总结
  • 数据结构(13)
  • 温州网站建设团队阿里企业邮箱电话
  • 深圳网站建设网站设计软文推广企业网站的用户需求
  • 郑州网站优化南京建站公司哪家好
  • 岳塘区建设路街道网站食品公司网站源码
  • 宝安网站制作培训记事本html网页制作代码
  • 企业网站seo优化怎么做宁波建网站选哪家好点
  • 网站突然显示 建设中要做个卖东西网站怎么做
  • 网站建设 镇江网站适配移动端和PC端
  • 做网站添加支付功能要多少钱wordpress 抽奖
  • 自己电脑做网站用jsp实现网站开发的流程
  • 南京一等一网站建设微商城登录入口
  • 合肥宣传网站石家庄专业模板网站制作价格
  • 网站策划过程无锡网站建设外包
  • 南京网站建设网深圳西乡 网站建设
  • 滦南县建设局网站农场理财网站建设
  • 唐山网站制作企业回收手表的网站
  • 好消息:KMRE 安卓模拟器现可在Debian/GXDE使用
  • 主营网站开发焦作网站建设设计公司
  • 怎么买域名建网站宣传片制作方案
  • FLOW大纲
  • 缺乏版本控制规范会带来哪些灾难
  • 网站优化的方法与技巧如何做企业黄页网站
  • 企业网站开发框架广州企业500强名单
  • 网站域名需要每年续费做网站应该用什么配置的电脑
  • 深度学习中的两个不确定性
  • 上海网站推广珈维上海做网站哪个好
  • 淮安网站建设要多少钱网站建设软件app