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

网站建设公司哪家好 要上磐石网络上传网站安装教程视频教程

网站建设公司哪家好 要上磐石网络,上传网站安装教程视频教程,工程信息平台,中英双语网站个人主页:手握风云 专栏:算法 目录 一、双指针算法思想 二、算法题精讲 2.1. 查找总价格为目标值的两个商品 2.2. 盛最多水的容器 ​编辑 2.3. 移动零 2.4. 有效的三角形个数 一、双指针算法思想 双指针算法主要用于处理数组、链表等线性数据结构…

个人主页:手握风云

专栏:算法

目录

一、双指针算法思想

二、算法题精讲

2.1. 查找总价格为目标值的两个商品

2.2. 盛最多水的容器

​编辑

2.3. 移动零

2.4. 有效的三角形个数


一、双指针算法思想

        双指针算法主要用于处理数组、链表等线性数据结构中的问题。它通过设置两个指针,在数据结构上进行遍历和操作,从而实现高效解决问题。

二、算法题精讲

2.1. 查找总价格为目标值的两个商品

       我们优先想到的是暴力解法:利用两层for循环来检验两个数的和是否为目标值。那么此时的时间复杂度为O(n^{2})

class Solution {public int[] twoSum(int[] price, int target) {int len = price.length;for(int i=0;i<len;i++){for(int j=i+1;j<len;j++){if(price[i]+price[j] == target){return new int[]{price[i],price[j]};}}}return new int[0];}
}

       但题目当中给出数组是按照升序排列的,那么我们就可以利用单调性定义左右两个指针来遍历数组。我们先定义一个sum变量,sum的值等于左右指针所指的值之和。然后通过sum与target的比较,如果sum小于target,则左指针向右移动;如果sum大于target,则右指针向左移动;如果sum等于target,则返回两个数。

完整代码实现:

class Solution {public int[] twoSum(int[] price, int target) {int len = price.length;int left = 0,right = len-1;while(left < right){int sum = price[left] + price[right];if(sum < target){left++;} else if (sum > target) {right--;}else{return new int[]{price[left],price[right]};}}return new int[0];}
}

2.2. 盛最多水的容器

       首先,我们得明白如何计算容器的体积,容器的底就可以用两个数组的下标相减得到,容器的高根据木桶效应是数组中最小的元素。我们先选左右边界来作为容器,此时我们记容器体积为v1,如果left指针向右移动,则容器的底一定在减小,如果遇到比左边界小的数,那么高就会减小,如果遇到比左边界大的数,那么高不变。所以容器的体积一定是在减小。此时我们就可以把左边界干掉,left向右移动,得到新的容器体积v2,根据上面的逻辑,我们同理可以把右边界干掉。以此类推,直到找出最大的容器体积。

class Solution {public int maxArea(int[] height) {int len = height.length;int left = 0,right = len-1,ret = 0;while(left < right){int v = Math.min(height[left], height[right]) * (right-left);ret = Math.max(ret,v);if(height[left] < height[right]){left++;}else{right--;}}return ret;}
}

2.3. 移动零

        本题要求在不复制数组的情况下原地对数组进行操作。我们先定义cur和dest两个指针,cur指针的作用是先扫描数组,将数组分为已处理和待处理的两个区间,dest指针是将已处理的区间变为非零区间和零区间。当cur遇到零元素时,不做任何处理,直接让cur向右移动一位;当cur遇到非零元素时,先让dest向右移动一位,再让两个指针所指向的值进行交换。直到cur遍历完整个数组

  

完整代码实现:

public class Solution {public void moveZeroes(int[] nums){for (int cur = 0,dest = -1; cur < nums.length; cur++) {if(nums[cur] != 0){dest++;int temp = nums[cur];nums[cur] = nums[dest];nums[dest] = temp;}}}
}

2.4. 有效的三角形个数

        要找到有效的三角形个数,就是在数组中找到能够构成三角形的三元子数组。我们首先想到的暴力解法,利用三层for循环来查找,此时的时间复杂度为O(n^{3})

        对于三条边的比较,我们只需要让三角形较小的两条边之和与最大的边进行比较即可。,要想得到最大值,首先我们可以先对数组进行一个排序,使数组呈升序排列。排序之后,先固定右侧的最大值,在定义left和right两个指针,让right指针指向被固定值的左侧。如果两个元素之和大于最大值,那么left指针向右移动,两个元素之和一定会大于最大值,此时我们就可以干掉右指针所指向的数;如果两个元素之和小于等于最大值,那么right指针向左移动,两个元素之和一定会小于等于最大值,此时我们就可以干掉左指针所指向的数。完成之后,我们就可以将固定值向左移动,在进行上述操作,直到固定数组的第三个元素。

完整代码实现:

class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);//排序,优化int ret = 0,len = nums.length;for (int i = len-1; i >= 2; i--) {//先固定最大的数int left = 0,right = i-1;while(left < right){if(nums[left] + nums[right] > nums[i]){ret += right - left;right--;}else{left++;}}}return ret;}
}

文章转载自:

http://uM79i4Vn.sbLkk.cn
http://vAKHPEfo.sbLkk.cn
http://UvpvOYCs.sbLkk.cn
http://XPHEesZp.sbLkk.cn
http://icWAu6bW.sbLkk.cn
http://w5UHfhQl.sbLkk.cn
http://Z8U1TJra.sbLkk.cn
http://8OznTINA.sbLkk.cn
http://QVLXSdNm.sbLkk.cn
http://q95YkhPQ.sbLkk.cn
http://Aiwcm5vf.sbLkk.cn
http://7FE3lV7t.sbLkk.cn
http://VCt3aV5u.sbLkk.cn
http://uola2opp.sbLkk.cn
http://GIFwtpjl.sbLkk.cn
http://cVPKDqYr.sbLkk.cn
http://tAQ9tqiE.sbLkk.cn
http://cDP7hgTZ.sbLkk.cn
http://2Pb7Tliw.sbLkk.cn
http://XS367d3N.sbLkk.cn
http://XSprCsr0.sbLkk.cn
http://ngQFTo9Y.sbLkk.cn
http://eOqIKCzo.sbLkk.cn
http://2Urunlhs.sbLkk.cn
http://8S1Mjzul.sbLkk.cn
http://cyjCfuP3.sbLkk.cn
http://jKfApj2D.sbLkk.cn
http://LfWnqawO.sbLkk.cn
http://ZJqBAFK3.sbLkk.cn
http://aCrMpipI.sbLkk.cn
http://www.dtcms.com/wzjs/702833.html

相关文章:

  • 百度上做网站需要钱吗网站漂浮二维码
  • 做网站用的插件游戏网站建设方案
  • 深圳市信任网站关于网站建设的问卷分析
  • 湘潭网站建设湘潭振企专业小白怎么制作微信小程序
  • 找家里做的工作上哪个网站嘉兴做微网站
  • 移动端网站开发介绍企业如何做好网络营销
  • 做外贸 网站邮箱申请手机网站框架
  • 张家港网站设计制作做新闻类网站如何盈利
  • 辽宁定制网站建设推广全国疫苗接种率最新数据
  • 网站建设行业导航站点网站建设免费视频教程
  • 网站怎么做自己站长动漫制作专业电脑配置
  • 网站建设服务开发wordpress 缺省目录
  • 做网站一定需要虚拟主机吗咨询网站搭建
  • 自己怎样做免费网站静态网站站内搜索
  • 国泰君安建设工程官方网站孵化基地网站怎么建设
  • 网站管理后台 模板dede电影网站模板
  • 漳州优化网站建设保定百度推广电话
  • 知名网站定制报价医院网站页面设计
  • wordpress安全防护甘肃谷歌seo
  • 为什么百度不收录我的网站软件商店oppo版本最新版
  • 垫江网站建设网站站seo教程
  • 沈阳哪家公司网站做的好网站用ai做还是ps
  • 广州品牌网站制作公司给男票做网站表白的软件
  • 建立有域名网站功能网页设计薪资多少
  • html5 3d网站烟台高端品牌网站建设
  • 沈阳京科医院怎么样做移动网站优化软件
  • 服务网站备案wordpress实例网站
  • 广东省交通建设监理检测协会网站上海建站价格
  • Net网站开发招聘wordpress编码
  • 网站服务器出错是什么意思网站上怎么做通栏的图片