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

企业做网站公司优化大师下载旧版本安装

企业做网站公司,优化大师下载旧版本安装,vue新增页面,广州企业网两数之和 https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/description/ 比较简单,因为数组是排好序的,那么就利用双指针left、right,一个指向开头,一个指向结尾;如果两个指针位置元素相加大于目标元…

两数之和

https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/description/

比较简单,因为数组是排好序的,那么就利用双指针left、right,一个指向开头,一个指向结尾;如果两个指针位置元素相加大于目标元素,说明指向大了,right左移;反之,left右移。

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

三数之和

https://leetcode.cn/problems/3sum/

class Solution {public List<List<Integer>> threeSum(int[] nums) {Arrays.sort(nums);List<List<Integer>> res = new ArrayList<>();int n = nums.length;for(int i = 0;i<n-2;++i){int target = nums[i];int j = i+1,k=n-1;//去重操作if(i>0&&nums[i]==nums[i-1])continue;if(target+nums[i+1]+nums[i+2]>0)break;//当前值和两个最小值都大于0 直接break 因为target继续也是继续变大  加最小的都大于0  变大更是大于0了if(target+nums[k]+nums[k-1]<0)continue;///当前值和两个最大值都小于0 直接continue  枚举下一个target 因为target还可能变大 所以可能出现大于等于0while(j<k){if(nums[j]+nums[k]>-target)--k;else if(nums[j]+nums[k]<-target)++j;else {res.add(Arrays.asList(target,nums[j],nums[k]));j++;//去重操作while(j<k&&nums[j]==nums[j-1])++j;k--;//去重操作while(j<k&&nums[k]==nums[k+1])--k;}}}return res;}
}

统计和小于目标的下标对数目

https://leetcode.cn/problems/count-pairs-whose-sum-is-less-than-target/description/

class Solution {public int countPairs(List<Integer> nums, int target) {//先排序 排序之后相向双指针才更好的使用nums.sort((a,b)->a-b);int res = 0;//存储结果int i = 0,j = nums.size()-1;while(i<j){//当满足小于target的时候,i 到 i+1~j 之间的每一个元素肯定都是满足的if(nums.get(i)+nums.get(j)<target)res+=j-i++;else --j;}return res;}
}

最接近的三数之和

https://leetcode.cn/problems/3sum-closest/

基于三树之和改编的,不过灵神多了两部的剪枝优化 我这里没有写上去

class Solution {public int threeSumClosest(int[] nums, int target) {Arrays.sort(nums);int res = Integer.MAX_VALUE;int n = nums.length;for(int i = 0;i<n-2;++i){if(i>0&&nums[i]==nums[i-1])continue;//优化一int num = nums[i];int left = i+1,right = n-1;while(left<right){int s = nums[left]+num+nums[right];res= (Math.abs(res-target)>Math.abs(s-target))?s:res;if(s>target)--right;else if(s<target)++left;else return target;}}return res;}
}

四数之和

https://leetcode.cn/problems/4sum/description/

四数之和我们可以类似三数之和一样,定一个数 那么就是三数之和 然后就是三数之和的逻辑,再定一个就变成两数之和。就是一个套娃

注意结果使用long接收

class Solution {public List<List<Integer>> fourSum(int[] nums, int target) {Arrays.sort(nums);List<List<Integer>> res = new ArrayList<>();int n = nums.length;for(int i = 0;i<n-3;++i){long  num1 = nums[i];if(i>0&&nums[i]==nums[i-1])continue;if(num1+nums[i+1]+nums[i+2]+nums[i+3]>target)break;if(num1+nums[n-1]+nums[n-2]+nums[n-3]<target)continue;for(int j = i+1;j<n-2;++j){long  naum2 = nums[j];if(j>i+1&&nums[j]==nums[j-1])continue;if (num1 + num2 + nums[j + 1] + nums[j + 2] > target) break; if (num1 + num2 + nums[n - 2] + nums[n - 1] < target) continue; int left = j+1,right = n-1;while(left<right){long s = num1+num2+nums[left]+nums[right];if(s==target){res.add(Arrays.asList((int)num1,(int)num2,nums[left],nums[right]));++left;while(left<right&&nums[left]==nums[left-1])++left;--right;while(left<right&&nums[right]==nums[right+1])--right;}else if(s>target){--right;}else{++left;}}}}return res;}
}

有效三角形的个数

https://leetcode.cn/problems/valid-triangle-number/description/

能成为一个三角形的条件:两边之和大于第三边

这样也就是三数之和的变种题目了 不过就是从后向前遍历罢了

class Solution {public int triangleNumber(int[] nums) {Arrays.sort(nums);int res = 0;int n = nums.length;for(int i = n-1;i>=2;--i){if(nums[i]>=nums[i-1]+nums[i-2])continue;//最大的两个边相加都小于第三边int l = 0,r = i-1;while(l<r){if(nums[l]+nums[r]>nums[i]){res+=r-l;--r;}else{++l;}}}return res; }
}

盛最多水的容器

https://leetcode.cn/problems/container-with-most-water/description/

面积由宽×高,高就是左右比较矮的哪一个 这样就可以了!

class Solution {public int maxArea(int[] height) {int n = height.length;int left = 0,right = n-1;int res = 0;while(left<right){int h,w = right-left;if(height[left]<height[right]){h = height[left];++left;}else{h = height[right];--right;}res = Math.max(res,w*h);}return res;}
}

接雨水

https://leetcode.cn/problems/trapping-rain-water/solutions/1974340/zuo-liao-nbian-huan-bu-hui-yi-ge-shi-pin-ukwm/

我们将每一个位置看作一个桶,桶的左边界就是左边做高的,右边界就是右边最高的,该位置可以存储的雨水位:min(左边界,右边界)-当前位置高度*1

class Solution {public int trap(int[] height) {int res= 0;int left = 0,right =height.length-1;int preMax = 0,sufMax = 0;//代表左边最高的板子和右边最高的板子while(left<right){preMax = Math.max(preMax,height[left]);sufMax = Math.max(sufMax,height[right]);if(preMax<sufMax){res+=preMax-height[left++];}else{res+=sufMax-height[right--];}}return res;}
}
http://www.dtcms.com/wzjs/86040.html

相关文章:

  • 优惠网站怎么做山东今日头条新闻
  • 做网站 域名不属于郑志平爱站网创始人
  • 宿州市网站建设百度快照查询入口
  • 手机网站设计建设seo点击排名软件哪里好
  • pc网站怎么做适配关键词排名优化怎么样
  • 网站管理系统源码宁波网站建设网站排名优化
  • 如何增加网站关键词密度seo网络推广有哪些
  • 企业logo设计注意事项站长seo软件
  • 河南城乡住房和建设厅网站徐州seo管理
  • 怎样做网站性能优化关键词网络推广企业
  • 网站设计中主题有哪些作用朝阳区seo
  • 辽宁建设工程信息网招标文件怎么打开盐城seo排名
  • 网站制作人员游戏推广员拉人犯法吗
  • 应用软件开发工程师是做什么的宁波网站优化公司价格
  • 网站推广流程色盲怎么治疗
  • 西安做网站印象网络浏览器广告投放
  • 宁波专业平台网站建设舆情监控系统
  • 滁州建设网站公司网络黄页平台网址有哪些
  • 在演示文稿上网站怎么做网络推广代运营公司
  • 网站外包谁报价seo点击软件手机
  • 海口网站开发建设电商运营自学网站
  • wordpress深入理解安卓手机优化
  • 金融行业建设网站外贸平台推广
  • 营销网站制作服务热线怎么做一个自己的网站
  • 展示型建站模板平台seo搜索引擎优化工资薪酬
  • 广汉网站建设百度关键词优化有效果吗
  • html制作一个网站代码网站怎么搭建
  • 江苏seo推广网站建设小程序开发制作
  • 网站做得好的公司百度上怎么打广告宣传
  • 如何构建个人网站烘焙甜点培训学校