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

绿叶网站怎么做学生网站建设的总结与评价

绿叶网站怎么做,学生网站建设的总结与评价,施工企业在施工现场搭设临时设施,wordpress category模板目录 前言#xff1a; 复写零 题目解析 算法原理 算法编写 四数之和 题目解析 算法原理 算法编写 前言#xff1a; 本文是双指针算法的最后一文#xff0c;以复写零和四数之和作为结束#xff0c;介绍方式同样是题目解析#xff0c;算法原理#xff0c;算法编写…目录 前言 复写零 题目解析 算法原理 算法编写 四数之和 题目解析 算法原理 算法编写 前言 本文是双指针算法的最后一文以复写零和四数之和作为结束介绍方式同样是题目解析算法原理算法编写三部曲以下是题目的链接 1089. 复写零 - 力扣LeetCode 18. 4Sum - 力扣LeetCode 那么话不多说直接进入主题。 复写零 题目解析 题目的要求就是在原来的数组基础上不允许另外创建一个数组调用了函数原来是零的地方写两次并且不能影响后面的元素除非是已经超过了数组的空间。题目的要求还是比较简单的。 那么这道题存不存在暴力解法呢 显然这道题并不是通过n个循环就可以解决的所以我们不妨直接使用双指针。 到这个阶段不妨不用思考为什么使用双指针因为目前来说算法基础并不牢靠我们不妨积累经验。 算法原理 我们不妨模拟一下这个复写零的过程 cur指向的是原来的数组我们假设条件就地修改这个条件不存在我们如果是新开一块空间过程就是两个for遍历数组如果不是0cur dest都如果是0curdest两次这是原来的过程最后结束条件就是判断dest是否到了结束位置。 在这个过程我们要考虑一个点就是dest如果是碰见了0进行复写第二个零越界了怎么办 这个情况我们只需要将原数组的最后一个位置置为零即可虽然越界但是是因为复写此时最后置为零就完全没问题了。 那么为什么我们要模拟这过程呢 因为我们要找到最后一个复写的数如果找不到我们没有办法进行后续的复写操作。 第一步也就完成了找到复写的最后一个数最后开始复写。 开始复写的判断结束条件就是cur是否走到了-1判断arr[cur]是否为0是0dest就多走一步不是就走一步别看说着轻松有许多要注意的。 算法编写 class Solution { public:void duplicateZeros(vectorint arr) {//找到最后一个复写的数int cur 0,dest -1;while(cur arr.size()){if(arr[cur]) dest;else dest 2;//边界验证的辅助条件if(dest arr.size() - 1) break;cur;}//处理边界情况 并且进行第一步复写if(dest arr.size()){arr[dest - 1] 0;dest - 2,cur--;}//进行复写while(cur 0){if(arr[cur]) arr[dest--] arr[cur];else arr[dest--] 0,arr[dest--] 0; cur--; }} }; 第一个点为什么dest要从-1开始因为cur要先判断判断之后dest才走如果一开始dest就在0位置那么就相当于多走了一步我们拿数组[0]举例如果dest在0位那么走两步最后的位置是2已经完全超过了我们预期的判断位置即便是越界越的也应该是1这个位置。 第二个点处理边界的时候dest和cur需要移动因为这已经是一次复写了。 第三个点复写的时候if(arr[cur])里面的cur是不可以--的因为后面会用到当前的cur。 这几个小细节注意点为好。 此时这道题就做完了时间复杂度呢是O(N)空间复杂度为O(1)。 四数之和 题目解析 题目的意思和三数之和十分像的三数之和是找三个数等于0那么该题目是找4个数字等于target并且下标不能重复也就是一个数字不能一直使用题目的要求很简单所以我们直接进入算法原理部分。 算法原理 原理和三数之和是十分像的我们只需要固定个数然后找三个数和该数 - target相等再固定一个数找两个数等于target - 两外两个数这就是妥妥的双指针了根本不需要经过思考就可以动手了其次就是去重操作就没有了。 算法编写 class Solution { public:vectorvectorint fourSum(vectorint nums, int target) {sort(nums.begin(),nums.end());vectorvectorint ans;for(int i nums.size() - 1;i 2;){for(int j i - 1;j 1;){int left 0, right j - 1; while(left right){long long sum (long long)nums[j] (long long)nums[left] (long long)nums[right] (long long)nums[i];if( sum (long long)target) {ans.push_back({nums[i],nums[j],nums[left],nums[right--]});while(left right nums[left] nums[left - 1]) left; while(left right nums[right] nums[right 1]) right--; }else if(sum (long long)target)right--;else left;} j--;while(j 1 nums[j] nums[j 1]) j--;}i--;while(i 2 nums[i] nums[i 1]) i--;} return ans;} }; 至于为什么使用long long因为 这个题目较为恶心的是存在int溢出的风险。 双指针算法也就到这里啦后面的是滑动窗口~ 感谢阅读
http://www.dnsts.com.cn/news/207135.html

相关文章:

  • 我要自学网网站温县住房和城乡建设局网站
  • 旅游网站开发选题背景如何查看一个网站用什么程序做的
  • 哪家房屋设计公司网站wordpress仿京东
  • 五网合一网站建设丹徒网站建设报价
  • 图片模板 网站源码室内设计学校大专
  • 个体工商户做网站能加地名吗如何查看网站建站程序
  • 做30个精品网站深圳网站制作收费
  • 可以做手机网页的网站做网站的行业平台
  • 网站开发企业部门京东联盟怎么做CMS网站
  • 网站规划和布局浙江建设职业技术学院
  • 建一个网站需要多少费用网架公司安全员需要什么证书
  • 云南网站开发费用Wordpress 图片 不显示
  • 做网站的关键词在线室内设计
  • 校园网站建设方案策划书口碑好个人品牌营销公司
  • 网站在百度上搜不到常平网站
  • 西安网站seo工作室北京规划建设 杂志 官方网站
  • 怎么把网站关掉太月星网站建设程序开发
  • 网站建设hyioi网站取消备案
  • 电商网站建设标准wordpress文章怎么生成海报
  • 怎样做展示型网站wordpress大主题公园
  • 网站流量增长小企业网站建设厂家有哪些
  • 做系统的图标下载网站郑州 互联网 公司网站
  • 谷歌网站提交梦创义网站建设公司
  • 福田做网站优化乐云seo宁波谷歌推广
  • 做网站编辑大专可以吗网站404页面的作用
  • 做创意美食的视频网站有哪些有哪些做兼职的设计网站有哪些工作内容
  • 淘宝客优惠券网站建设教程北京建设网站的公司兴田德润简介
  • 河北常见网站建设价格网站建设毕业设计开题报告
  • 做条形图的网站除了seo还可以做哪些推广呢
  • 企业网站推广的名词解释上海网站建设过程