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

java做博客网站有哪些功能seo智能优化软件

java做博客网站有哪些功能,seo智能优化软件,如何查一个网站的备案信息,上海 网站建设公司【算法笔记】双指针算法深度剖析 🔥个人主页:大白的编程日记 🔥专栏:算法笔记 文章目录 【算法笔记】双指针算法深度剖析前言一.移动零1.1题目1.2思路分析1.3代码实现 二.复写零2.1题目2.2思路分析2.3代码实现 三.快乐数3.1题目…

【算法笔记】双指针算法深度剖析

🔥个人主页大白的编程日记

🔥专栏算法笔记


文章目录

  • 【算法笔记】双指针算法深度剖析
    • 前言
    • 一.移动零
      • 1.1题目
      • 1.2思路分析
      • 1.3代码实现
    • 二.复写零
      • 2.1题目
      • 2.2思路分析
      • 2.3代码实现
    • 三.快乐数
      • 3.1题目
      • 3.2思路分析
      • 3.3代码实现
    • 四.盛水最多的容器
      • 4.1题目
      • 4.2思路分析
      • 4.3正确性证明
      • 4.4代码实现
    • 五.有效三角形个数
      • 5.1题目
      • 5.2思路分析
      • 5.3代码实现
    • 六.两数之和
      • 6.1题目
      • 6.2思路分析
      • 6.3代码实现
    • 七.三数之和
      • 7.1题目
      • 7.2思路分析
      • 7.3代码实现
    • 八.算法总结
    • 后言

前言

哈喽,各位小伙伴大家好!今天给大家分享的是入门算法双指针。算法我们程序员必备的技能。话不多说,咱们进入正题!向大厂冲锋!

一.移动零

1.1题目

  • 题目:移动零

1.2思路分析

这里我们无非就是想让数组维持非0元素在前,0元素在后的区间状态。同时不改变非0元素的相对顺序。那我们可以用区间思想,借助双指针维护我们的区间状态。

1.3代码实现

class Solution {
public:void moveZeroes(vector<int>& nums) {for(int cur=0,dest=-1;cur<nums.size();cur++)//初始化同时扫描数组{if(nums[cur])//判断是否非0{swap(nums[++dest],nums[cur]);//dest移动后交换}}}
};
//分成三个区间未处理区
//处理区分区为非0元素区和0元素区

二.复写零

2.1题目

  • 题目:复写零

2.2思路分析

我们从左往右无法复写,因为会覆盖后面的数据。但是从右往左复写可以。所以我们找到最后一个复写的数,处理一下特殊情况从右往左复写即可。

2.3代码实现

class Solution {
public:void duplicateZeros(vector<int>& arr) {int dest=-1,cur=0,n=arr.size();while(dest<n-1)//找到最后一个复写数{if(arr[cur]==0){dest++;}dest++;if(dest>=n-1){break;}cur++;}if(dest==n)//防止越界{arr[--dest]=0;dest--;cur--;}while(cur>=0)//从后往前复写{if(arr[cur]==0){arr[dest--]=0;arr[dest--]=0;cur--;}else{arr[dest--]=arr[cur--];}}}
};

三.快乐数

3.1题目

  • 题目:
    快乐数

3.2思路分析

这里我们根据鸽巢原理就可以把题目转化为判断入环点是否为1。
具体快慢指针相遇的问题可以看这篇 快慢指针相遇证明

3.3代码实现

这里我们用两个变量代替指针的作用。

class Solution {
public:int bitSum(int n)//计算每个数的平方和{int sum=0;while(n){sum+=pow(n%10,2);n/=10;}return sum;}bool isHappy(int n) {int slow=bitSum(n);int fast=bitSum(slow);while(slow!=fast){slow=bitSum(slow);fast=bitSum(fast);fast=bitSum(fast);}return slow==1;//判断入环点是否为1}
};

四.盛水最多的容器

4.1题目

  • 题目:盛水最多的容器

4.2思路分析

这里我们需要观察规律解题。

4.3正确性证明

4.4代码实现

class Solution {
public:int maxArea(vector<int>& height){int max=0;int left=0,right=height.size()-1;while(left<right)//双指针法{int v=fmin(height[left],height[right])*(right-left);//保存枚举的最大值max=fmax(v,max);//更新最大值height[left]<height[right]?left++:right--;}return max;}
};

五.有效三角形个数

5.1题目

  • 题目:有效三角形的个数

5.2思路分析

这里我们用排序的单调性做优化.

正确性证明上一个题解有,这里就不过多赘述了。

5.3代码实现

class Solution {
public:int triangleNumber(vector<int>& nums) {int ret=0;sort(nums.begin(),nums.end());for(int i=nums.size()-1;i>=2;i--)//固定最大的数{int left=0,right=i-1;while(left<right){int t=nums[left]+nums[right];if(t>nums[i])//大于{ret+=(right-left);right--;}else//小于{left++;}}}return ret;}  
};

六.两数之和

6.1题目

  • 题目:两数之和
    这里题目改了但是题意是一样的

6.2思路分析

这里依旧是按照单调性优化。

需要注意的是如果我们找到存在多个结果,我们找到结果后让left和right指针继续移动查找即可。

6.3代码实现

class Solution {
public:vector<int> twoSum(vector<int>& nums, int target) {sort(nums.begin(),nums.end());//排序int left=0,right=nums.size()-1;while(left<right){int tmp=nums[left]+nums[right];if(tmp<target){left++;}else if(tmp>target){right--;}else //找到结果{return {nums[left],nums[right]};}}return {};}
};

七.三数之和

7.1题目

  • 题目:三数之和

7.2思路分析

这里我们可以转化为两数之和来解决问题。但是要注意去重的问题。

7.3代码实现

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {vector<vector<int>> ret;sort(nums.begin(),nums.end());for(int i=0;i<nums.size()-2;)//固定最左边的指针{if(nums[i]>0)//大于没结果{break;}int left=i+1,right=nums.size()-1;int target=-nums[i];//找两数之和while(left<right)//左右指针两数之和,先移动再比较{int tmp=nums[left]+nums[right];if(tmp<target)//小于{left++;while(left<right&&nums[left]==nums[left-1])//跳过重复元素去重{left++;}}else if(tmp>target)//大于{right--;while(left<right&&nums[right]==nums[right+1])//跳过重复元素去重{right--;}}else//相等{ret.push_back({nums[i],nums[left],nums[right]});//记录结果left++;right--;while(left<right&&nums[left]==nums[left-1])//跳过重复元素去重{left++;}while(left<right&&nums[right]==nums[right+1])//跳过重复元素去重{right--;}}}i++;while(i<nums.size()&&nums[i]==nums[i-1])//跳过重复元素去重{i++;}//去重}return ret;}
};

八.算法总结

双指针算法总体来说就是利用两个指针,根据题目要求灵活结合单调性,区间思想,以及题目场景用指针的移动访问解决问题。总而言之,双指针需要根据题目灵活使用解决问题

后言

这就是双指针算法原理的深度剖析,这些题目基本包含了双指针的所有解题方法。大家自己好好消化。感谢大家的耐心垂阅!今天就分享到这,咱们下期见!拜拜~


文章转载自:
http://mandrax.c7617.cn
http://accessibly.c7617.cn
http://photodegradable.c7617.cn
http://axiom.c7617.cn
http://commune.c7617.cn
http://maidenish.c7617.cn
http://demibastion.c7617.cn
http://sowcar.c7617.cn
http://wordily.c7617.cn
http://forced.c7617.cn
http://royal.c7617.cn
http://essentic.c7617.cn
http://faciobrachial.c7617.cn
http://pass.c7617.cn
http://osteitic.c7617.cn
http://sedulous.c7617.cn
http://italianize.c7617.cn
http://slipcase.c7617.cn
http://gnash.c7617.cn
http://dripolator.c7617.cn
http://accessorius.c7617.cn
http://lancashire.c7617.cn
http://drainage.c7617.cn
http://flyer.c7617.cn
http://etr.c7617.cn
http://chorion.c7617.cn
http://biome.c7617.cn
http://polymasty.c7617.cn
http://mastic.c7617.cn
http://rust.c7617.cn
http://hoverbed.c7617.cn
http://strategics.c7617.cn
http://estragon.c7617.cn
http://venene.c7617.cn
http://corynebacterium.c7617.cn
http://windcharger.c7617.cn
http://dissuasive.c7617.cn
http://freshener.c7617.cn
http://limaceous.c7617.cn
http://ungodly.c7617.cn
http://aerobiotic.c7617.cn
http://bas.c7617.cn
http://absenteeism.c7617.cn
http://decimalization.c7617.cn
http://malty.c7617.cn
http://matriclan.c7617.cn
http://stye.c7617.cn
http://cres.c7617.cn
http://squawkbox.c7617.cn
http://nephrogenic.c7617.cn
http://onload.c7617.cn
http://saprolite.c7617.cn
http://eelpout.c7617.cn
http://donghai.c7617.cn
http://pharyngocele.c7617.cn
http://admass.c7617.cn
http://synodical.c7617.cn
http://erective.c7617.cn
http://nuts.c7617.cn
http://aerobium.c7617.cn
http://xanthochroi.c7617.cn
http://kalmuck.c7617.cn
http://cripple.c7617.cn
http://logarithmize.c7617.cn
http://linson.c7617.cn
http://diaspore.c7617.cn
http://slick.c7617.cn
http://cabalism.c7617.cn
http://tomogram.c7617.cn
http://biblical.c7617.cn
http://aeolipile.c7617.cn
http://shindig.c7617.cn
http://elegiacal.c7617.cn
http://primatology.c7617.cn
http://pesky.c7617.cn
http://psittaceous.c7617.cn
http://irisated.c7617.cn
http://asymptomatically.c7617.cn
http://stockist.c7617.cn
http://fumade.c7617.cn
http://dulcify.c7617.cn
http://surfboard.c7617.cn
http://geocentricism.c7617.cn
http://fantastically.c7617.cn
http://transfigure.c7617.cn
http://stockily.c7617.cn
http://haemocyte.c7617.cn
http://addresser.c7617.cn
http://prefigurative.c7617.cn
http://osteopathic.c7617.cn
http://quinze.c7617.cn
http://parmigiano.c7617.cn
http://feu.c7617.cn
http://monodrama.c7617.cn
http://solanum.c7617.cn
http://strawhat.c7617.cn
http://colourbreed.c7617.cn
http://uphroe.c7617.cn
http://wineskin.c7617.cn
http://monandrous.c7617.cn
http://www.zhongyajixie.com/news/74933.html

相关文章:

  • shopify独立站需要多少钱西安seo经理
  • ps网站参考线怎么做友情链接的作用大不大
  • 如何采集网站文章怎么开一个网站平台
  • 竹制品网站怎么做成人短期就业培训班
  • vs2013做的网站怎样注册网站建立网页
  • 郑州东站附近网站建设公司百度公司简介介绍
  • 建网站多少钱建个网站需要怎么做关键词推广哪家好
  • 郑州市招投标信息网吴中seo页面优化推广
  • 大亚湾建设局网站关键词优化怎么弄
  • 甘肃网站制作公司91手机用哪个浏览器
  • 南宁手机平台网站建设南京百度网站推广
  • 环境设计排版哪个网站好宁波网络推广运营公司电话
  • 生活服务手机网站开发海洋seo
  • 用易语言做钓鱼网站免费的网络推广渠道有哪些
  • 不知此网站枉做男人的网站手机自动排名次的软件
  • 怎么在百度提交网站百度搜索下载
  • 电子商务网站租用服务器费用知乎seo
  • 建设博客网站步骤外包网络推广公司推广网站
  • 荔浦网站开发地推任务网
  • 做企业网站用哪个cms互联网广告代理加盟
  • 武汉wordpress建站提高网站排名的软件
  • 成都网页制作服务好电脑系统优化软件排行榜
  • 做网站用哪种代码比较好推广seo做得比较好的企业案例
  • 国外建设网站用的是什么软件宁波如何做seo排名优化
  • 有学做美食的网站吗世界十大搜索引擎排名
  • 手机触屏网站模板看b站视频下载软件
  • 相册管理网站模板下载网络整合营销理论案例
  • 长春网站开发报价企业网站建设优化
  • 嘉兴做网站哪家好网站优化排名易下拉系统
  • 网站添加手机站独立站优化