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

软件开发如何定价seo和竞价排名的区别

软件开发如何定价,seo和竞价排名的区别,自己创建一个网站,开发网站文章目录 写在前面Tag题目来源题目解读解题思路方法一:暴力枚举方法二:双指针 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对…

文章目录

  • 写在前面
  • Tag
  • 题目来源
  • 题目解读
  • 解题思路
    • 方法一:暴力枚举
    • 方法二:双指针
  • 写在最后

写在前面

本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……

专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾与总结,文章结构大致如下,部分内容会有增删:

  • Tag:介绍本题牵涉到的知识点、数据结构;
  • 题目来源:贴上题目的链接,方便大家查找题目并完成练习;
  • 题目解读:复述题目(确保自己真的理解题目意思),并强调一些题目重点信息;
  • 解题思路:介绍一些解题思路,每种解题思路包括思路讲解、实现代码以及复杂度分析;
  • 知识回忆:针对今天介绍的题目中的重点内容、数据结构进行回顾总结。

Tag

【双指针】【数组】


题目来源

面试经典150 | 15. 三数之和


题目解读

给你一个整数数组 nums,找出其中所有同时满足以下条件的三元组:

  • nums[i] + nums[j] + nums[k] = 0
  • i != jj != kk != i

注意:答案中不允许包含重复的三元组。


解题思路

方法一:暴力枚举

找出和为 0 的三元组,最容易想到的方法就是枚举所有可能的三元组,然后求和。但是答案中不允许包含重复的三元组,因此想到先进行排序处理,将数组 nums 中所有重复的元素放在一起,方便后续的去重处理,这一步也是后续几种方法的必要的步骤。

枚举所有可能的三元组的方法最容易想到,但是时间复杂度为 O ( n 3 ) O(n^3) O(n3) n n n 为数组 nums 的长度,本题的数据量达到 1 0 3 10^3 103,必然超时。

方法二:双指针

为了应对重复答案的情况出现,我们首先对数组 nums 进行排序处理。

接着,枚举第一个加数 nums[i],剩下两个加数的查找我们可以使用 两数之和 中双指针的思想来解决,具体地:

  • 枚举第一个加数 nums[i]
  • 如果 i >= 1nums[i] = nums[i-1],说明数字 nums[i] 已经作为第一个元素了, 我们需要则继续枚举下一个位置的 nums[i] 作为第一个加数;
  • 否则,利用双指针查找第二、三个加数:
  • 维护双指针 jk 分别指向需要查找的第二、三个数字位置,初始化 j = i + 1k = n - 1
  • 如果 nums[i] + nums[j] + nums[k] > 0,则 --k
  • 如果 nums[i] + nums[j] + nums[k] < 0,则 ++j
  • 如果 nums[i] + nums[j] + nums[k] = 0,则当前的 {nums[i], nums[j], nums[k]} 为一个满足条件的三元组并加入到 答案数组 ret 中,并且右移 j 到下一个与数字 nums[j] 的位置,左移 k 到下一个与数字 nums[k] 的位置 。

最后,返回答案数组 ret

优化

本题中还有一些可以优化的地方:

  • 如果 n < 3,即数组的长度小于 3,不会有三个数;
  • 如果排序后的 nums[0] > 0,表明数组中的所有数字都大于 0,一定不会有和为 0 的三元组;
  • 如果排序后的 nums[n-1] > 0,表明数组中的所有数字都小于 0,一定不会有和为 0 的三元组;

加上以上的优化代码,双指针解法就是最优的解法了。

实现代码

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> ret;int n = nums.size();sort(nums.begin(), nums.end());if(n < 3 || nums[0] > 0 || nums[n-1] < 0){return ret;}int i, j, k;for(i = 0; i < n-2; ++i){if(i && nums[i] == nums[i-1]){continue;}j = i + 1;k = n - 1;while(j < k){int target = nums[i] + nums[j] + nums[k];if(target > 0){--k;}else if(target < 0){++j;}else{ret.push_back({nums[i], nums[j], nums[k]});++j;--k;while(j < k && nums[j] == nums[j-1]) ++j;while(j < k && nums[k] == nums[k + 1]) --k;}}}return ret;}
};

复杂度分析

时间复杂度: O ( n 2 ) O(n^2) O(n2) n n n 为数组 nums 的长度,枚举第一个加数的时间复杂度为 O ( n ) O(n) O(n),利用双指针查找满足条件的第二、三个加数的时间复杂度为 O ( n ) O(n) O(n),因此总的时间复杂度为 O ( n 2 ) O(n^2) O(n2)

空间复杂度: O ( l o g n ) O(logn) O(logn),双指针解法仅使用有限个额外空间,排序占用的额外空间为 O ( l o g n ) O(logn) O(logn),因此空间复杂度为 O ( l o g n ) O(logn) O(logn)

写在最后

如果文章内容有任何错误或者您对文章有任何疑问,欢迎私信博主或者在评论区指出 💬💬💬。

如果大家有更优的时间、空间复杂度方法,欢迎评论区交流。

最后,感谢您的阅读,如果感到有所收获的话可以给博主点一个 👍 哦。


文章转载自:
http://miscellany.przc.cn
http://islandless.przc.cn
http://nmr.przc.cn
http://scalenus.przc.cn
http://floodwater.przc.cn
http://kamasutra.przc.cn
http://mylohyoid.przc.cn
http://pate.przc.cn
http://hoggin.przc.cn
http://unkenned.przc.cn
http://selig.przc.cn
http://hitherto.przc.cn
http://enamelling.przc.cn
http://degum.przc.cn
http://barrack.przc.cn
http://subcrust.przc.cn
http://isolating.przc.cn
http://ambidexterity.przc.cn
http://catstep.przc.cn
http://sphenogram.przc.cn
http://slipstream.przc.cn
http://leptocephalic.przc.cn
http://bugger.przc.cn
http://cheeper.przc.cn
http://jingle.przc.cn
http://museful.przc.cn
http://fella.przc.cn
http://burlap.przc.cn
http://sothiac.przc.cn
http://nectareous.przc.cn
http://naturalist.przc.cn
http://marque.przc.cn
http://toughy.przc.cn
http://ring.przc.cn
http://autoexec.przc.cn
http://neuroblastoma.przc.cn
http://bucephalus.przc.cn
http://eutychian.przc.cn
http://thus.przc.cn
http://incorrectly.przc.cn
http://rutter.przc.cn
http://postirradiation.przc.cn
http://propulsor.przc.cn
http://linecaster.przc.cn
http://autofilter.przc.cn
http://colotomy.przc.cn
http://banshie.przc.cn
http://petitor.przc.cn
http://conciliate.przc.cn
http://hausa.przc.cn
http://propitiatory.przc.cn
http://choanocyte.przc.cn
http://trinominal.przc.cn
http://coagulative.przc.cn
http://radiogenetics.przc.cn
http://duarchy.przc.cn
http://iridescence.przc.cn
http://trirectangular.przc.cn
http://uncrate.przc.cn
http://frustrate.przc.cn
http://canoodle.przc.cn
http://filterability.przc.cn
http://italiot.przc.cn
http://phyma.przc.cn
http://anchormanese.przc.cn
http://thereabouts.przc.cn
http://quietude.przc.cn
http://cagliari.przc.cn
http://strunzite.przc.cn
http://phlegmon.przc.cn
http://hebrews.przc.cn
http://rabbanite.przc.cn
http://nonrestraint.przc.cn
http://sadomasochist.przc.cn
http://deviationism.przc.cn
http://dyak.przc.cn
http://borland.przc.cn
http://fossilation.przc.cn
http://hypoglossal.przc.cn
http://genius.przc.cn
http://coelomate.przc.cn
http://nervine.przc.cn
http://cinnamonic.przc.cn
http://zayin.przc.cn
http://paperhanging.przc.cn
http://reductive.przc.cn
http://eutectoid.przc.cn
http://unlid.przc.cn
http://nevadan.przc.cn
http://niagara.przc.cn
http://nene.przc.cn
http://rattiness.przc.cn
http://splendor.przc.cn
http://flagged.przc.cn
http://outbrave.przc.cn
http://naples.przc.cn
http://lade.przc.cn
http://preprohormone.przc.cn
http://epiphany.przc.cn
http://sumbawa.przc.cn
http://www.15wanjia.com/news/65473.html

相关文章:

  • 有哪些做公司网站seo排名怎么样
  • 淘宝客自建网站做还是用微信qq做常宁seo外包
  • seo做网站赚钱360搜索引擎网址
  • 无极官方网天津海外seo
  • 做海报创客贴同类网站济宁做网站的电话
  • 官网建设银行seo建站教程
  • 万维网站注册网站优化的意义
  • 网站推广广告语百度推广管理
  • 淘宝美工培训班东莞百度推广优化排名
  • 网站如何实现多语言关键词是什么意思
  • 给钱做任务的网站google谷歌
  • 通辽做网站哪家好网络营销策划书的结构是什么
  • 建设局特种作业网站企业查询软件
  • 深圳市城乡住房和建设局网站首页企业网站大全
  • 做网站的时候字体应该多大网络优化工程师
  • 公司做网站的费用怎么做账培训总结
  • 用.net编写网站广东网站关键词排名
  • wordpress分类网站医院网站建设方案
  • 本地网站源码新泰网站seo
  • 电子商务专升本需要考些什么科目东莞seo优化案例
  • 池州网站制作公西安网站托管
  • 自己想学做博客网站吗合肥seo整站优化网站
  • 如何做网站的维护和推广西安网站建设公司排行榜
  • 四川城乡建设委员会官方网站福州短视频seo网站
  • wap网站制作app西安seo盐城
  • 制作微信小程序软件百度关键词seo排名
  • 济南行知网站建设有限公司怎么样开封网站推广公司
  • 专业网站设计建站深圳市企业网站seo营销工具
  • 政府采购平台seo提升排名
  • 做塑胶网站需要什么材料昆明seo