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

多用户商城网站建设二次开发建站网站苏州

多用户商城网站建设二次开发,建站网站苏州,昆山做网站的jofuns,模板简历283. 移动零 leetcode链接#xff1a;https://leetcode.cn/problems/move-zeroes/ 给定一个数组 nums#xff0c;编写一个函数将所有 0 移动到数组的末尾#xff0c;同时保持非零元素的相对顺序。请注意 #xff0c;必须在不复制数组的情况下原地对数组进行操作。示例 1:…283. 移动零 leetcode链接https://leetcode.cn/problems/move-zeroes/ 给定一个数组 nums编写一个函数将所有 0 移动到数组的末尾同时保持非零元素的相对顺序。请注意 必须在不复制数组的情况下原地对数组进行操作。示例 1:输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2:输入: nums [0] 输出: [0] 提示:1 nums.length 104 -231 nums[i] 231 - 1 进阶你能尽量减少完成的操作次数吗这题就是一个典型的快慢指针问题类似于从数组中删除指定元素。快指针依次遍历慢指针用来存放元素。思路就是先把所有的0元素删除再在数组末位填充0代码如下 class Solution { public:void moveZeroes(vectorint nums) {int slow 0;for(int i 0 ; i nums.size(); i){if(nums[i] ! 0){nums[slow] nums[i];}}//把剩下的位置填充为0for(int i slow; i nums.size(); i){nums[i] 0;}} };11.盛最多水的容器 给定一个长度为 n 的整数数组 height 。 有 n 条垂线第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明你不能倾斜容器。这题是贪心算法 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图计算按此排列的柱子下雨之后能接多少雨水。示例 1输入height [0,1,0,2,1,0,1,3,2,1,2,1] 输出6 解释上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图在这种情况下可以接 6 个单位的雨水蓝色部分表示雨水。 示例 2输入height [4,2,0,3,2,5] 输出9对于这种问题我们不要想整体而应该去想局部。仅仅对于位置 i能装下多少水呢 能装 2 格水因为 height[i] 的高度为 0而这里最多能盛 2 格水2-02。 为什么位置 i 最多能盛 2 格水呢因为位置 i 能达到的水柱高度和其左边的最高柱子、右边的最高柱子有关我们分别称这两个柱子高度为 l_max 和 r_max位置 i 最大的水柱高度就是 min(l_max, r_max)。 也就是说 water[i] min(# 左边最高的柱子max(height[0..i]), # 右边最高的柱子max(height[i..end]) ) - height[i]根据该思路写一个暴力解法。 暴力解法 class Solution { public:int trap(vectorint height) {int res 0;for(int i 1; i height.size() - 1; i){//这样才能保证左右都有柱子int leftMax 0, rightMax 0;for (int j i; j height.size(); j)rightMax max(rightMax, height[j]);// 找左边最高的柱子for (int j i; j 0; j--)leftMax max(leftMax, height[j]);cout leftMax , rightMax endl;res max(0, min(leftMax,rightMax) - height[i]);}return res;} };时间复杂度On2实际上不需要每次都遍历可以借助备忘录。 这里实际上res加的时候时候不需要和0比较因为在计算 l_max 数组的时候是取「自己高度」和「目前左边最高」的最大值因此 l_max[i] height[i] 是恒成立的。r_max 同理。 备忘录 不用每次都计算left和right计算一次就好存储在两个数组中 class Solution { public:int trap(vectorint height) {if (height.size() 0) {return 0;}int res 0;vectorint leftMax(height.size(), 0);vectorint rightMax(height.size(), 0);leftMax[0] height[0];rightMax[height.size() - 1] height[height.size() - 1];for(int i 1; i height.size() - 1; i){//这样才能保证左右都有柱子leftMax[i] max(height[i], leftMax[i - 1]);}for(int i height.size() - 2; i 0; i--){rightMax[i] max(height[i], rightMax[i 1]);}for(int i 1; i height.size() - 1; i){res min(leftMax[i],rightMax[i]) - height[i];}return res;} };把时间复杂度降低为 O(N)已经是最优了但是空间复杂度是 O(N)。双指针法可以把空间复杂度降到O(1)。 双指针法 之前不管是暴力解法还是备忘录leftMax和rightMax分别代表 height[0..i] 和 height[i..end] 的最高柱子高度 而在双指针法中代表的是 height[0..left] 和 height[right..end] 的最高柱子高度 我们只在乎 min(l_max, r_max)。对于上图的情况我们已经知道 l_max r_max 了至于这个 r_max 是不是右边最大的不重要。重要的是 height[i] 能够装的水只和较低的 l_max 之差有关。 最终代码 class Solution { public:int trap(vectorint height) {int left 0, right height.size() - 1;int leftMax 0, rightMax 0;int res 0;while (left right) {leftMax max(leftMax, height[left]);rightMax max(rightMax, height[right]);// res min(leftMax, rightMax) - height[i]if (leftMax rightMax) {res leftMax - height[left];left;} else {res rightMax - height[right];right--;}}return res;} };11. 盛最多水的容器 给定一个长度为 n 的整数数组 height 。有 n 条垂线 第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明你不能倾斜容器。输入[1,8,6,2,5,4,8,3,7] 输出49 解释图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下容器能够容纳水表示为蓝色部分的最大值为 49。跟上面的题类似直接贴代码 class Solution { public:int maxArea(vectorint height) {int res 0;int left 0, right height.size() - 1;while(left right){res max(res, min(height[left], height[right]) * (right - left));if(height[left] height[right]){left;}else{right--;}}return res;} };这里要注意双指针的移动顺序为什么是往height[i]小的那边移动因为矩形的最大面积是由最短的那条边决定的如果移动较低的那一边那条边可能会变高使得矩形的高度变大进而就「有可能」使得矩形的面积变大相反如果你去移动较高的那一边矩形的高度是无论如何都不会变大的所以不可能使矩形的面积变得更大。 总结 感觉这样复习还是太零散没有体系了从明天开始还是按照模块来先把原来的题二刷掉然后再找拓展题。
http://www.w-s-a.com/news/876510/

相关文章:

  • 免费建各种网站淄博网站建设yx718
  • 凡科网建站入门教程运城市网站建设
  • 黄浦区未成年人思想道德建设网站oa系统是什么
  • 微信里的网站怎么做电子商务网站开发平台
  • 易企秀网站怎么做轮播图网站建设张世勇
  • 网站备案幕布尺寸建立网页的几个步骤
  • pc网站页面找出网站所有死链接
  • 专业做seo的网站网站内连接
  • 阿里云网站开发服务器想开网站建设公司
  • 网站开发不足之处茶叶seo网站推广与优化方案
  • 响应式网站建设系统网站优化怎么做 有什么技巧
  • 班级网站做哪些方面wordpress标签 扩展
  • 如何在电商上购物网站Wordpress 域名授权插件
  • 网站建设后台怎么弄昆明如何做好关键词推广
  • 自己怎么做个网站优酷视频网站开发
  • 2015做网站前景电子商务营销的发展现状
  • 官方网站建设情况说明电子商务网站开发的形式有
  • 网站建设玖金手指排名11专业建站公司建站系统
  • 全球排名前十网站百度网站官网网址
  • 商家在携程旅游网站怎样做宣传做网站公司苏州
  • 芜湖做网站都有哪些广州音乐制作公司
  • 青岛好的网站制作推广注册公司流程步骤
  • 怎么制作营销网站模板wordpress苗木模板
  • 手机网站样例wordpress 排序
  • 济南网站建设手机网站开发人员需要去做原型吗
  • 动易网站模板下载微信支付 wordpress
  • 学校建设外文网站情况阿里云 建设网站怎么样
  • 网站建设与网页设计制作深圳网站建设首选上榜网络
  • 网站浏览成交指标计算机应用是做什么的
  • 企业网站建设的要求wordpress 404页面模板