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

郑州建设网站的公司阳城seo排名

郑州建设网站的公司,阳城seo排名,用word做网站,花瓣按照哪个网站做的目录 1.题目链接:611.有效三角形的个数 2.题目描述: 3.解法一:(暴力解法)(会超时): 4.解法二(排序双指针) 1.题目链接:611.有效三角形的个数 2.题目描述: 给定一个包含非负整数的数组 nums &#xf…

目录

1.题目链接:611.有效三角形的个数

2.题目描述:

3.解法一:(暴力解法)(会超时):

4.解法二(排序+双指针)


1.题目链接:611.有效三角形的个数

2.题目描述:
 

给定一个包含非负整数的数组 nums ,返回其中可以组成三角形三条边的三元组个数。

示例 1:

输入: nums = [2,2,3,4]
输出: 3
解释:有效的组合是: 
2,3,4 (使用第一个 2)
2,3,4 (使用第二个 2)
2,2,3

示例 2:

输入: nums = [4,2,3,4]
输出: 4

3.解法一:(暴力解法)(会超时):

算法思路:
三层for循环枚举出所有的三元组,并且判断是否能构成三角形。

虽然说是暴力求解,但是还是可以优化一下:

判断三角形的优化

  • 如果能构成三角形,需要满足任意两边之和大于第三边。但是实际上只需让较小的两条边之和大于第三边既可。
  • 因此我们可以先将原数组排序,然后从小到大枚举三元组,一方面省去枚举的数量,另一方面方便判断是否能构成三角形。
class Solution
{
public:int triangleNumber(vector<int>& nums){//1.排序sort(nums.begin(), nums.end());int n = nums.size(), ret = 0;//2.从小到大枚举所有的三元组for (int i = 0; i < n; i++){for (int j = i + 1; j < n; j++){for (int k = j + 1; k < n; k++){   //当最小的两个边之和大于第三个边的时候,统计答案if (nums[i] + nums[i] > nums[k])ret++;}}}return ret;}
};

4.解法二(排序+双指针)

算法思路:

先将数组排序。

根据解法一中的优化思想,我们可以固定一个最长边,然后在比这条边小的有序数组中找出一个二元组,使这个二元组之和大于这个最长边。由于数组使有序的,我们可以利用对撞指针来优化。

设最长边枚举到i位置,区间[left,right]是i位置左边的区间(也就是比他小的区间):

  • 如果nums[left] + nums[right] > nums[i]:
    说明[left,right-1]区间上的所有元素均可以与nums[right]构成比nums[i]大的二元组            满足条件的有right - left种                                                                                                  此时right位置的元素的所有情况相当于全部考虑完毕,right--,进入下一轮判断
  • 如果nums[left] + nums[right] <= nums[i]:
    说明left位置的元素是不可能与[left+1,right]位置上的元素构成满足条件的二元组               left位置的元素可以舍去,left++进入下轮循环
class Solution {
public:int triangleNumber(vector<int>& nums) {int sum = 0,n = nums.size();sort(nums.begin(),nums.end());for(int i = n - 1;i>=2;i--){int left = 0,right = i-1;while(left<right){if(nums[left] + nums[right] > nums[i]){sum += (right - left);right--;}else{left++;}}}return sum;}
};

http://www.dtcms.com/a/602825.html

相关文章:

  • 宜春市城市建设网站苍南县住房和城乡规划建设局网站
  • 浅谈网站规划建设与管理维护企业站模板大全
  • 汕头网站建设维护网站建设的需要的工具
  • 网站提交了被收录后改怎么做php网站后台模板下载不了
  • Q3: create 和 create2 有什么区别?
  • 研发管理知识库(6)什么是CI/CD
  • 数据库知识整理——SQL数据更新
  • win7 iis架设网站思途旅游网站建设系统
  • 反编译易语言 | 探讨易语言的反编译方法与安全性分析
  • 无锡网站营销公司简介郑州加盟网站建设
  • 单位网站建设费用什么会计科目广告优化是做什么的
  • 自动化测试工具Katalon 全面介绍与实际体验
  • 游戏盾的流量清洗
  • 楚雄做网站敬请期待上一句
  • 山东鲁中公路建设有限公司网站站点传统的推广方式主要有
  • 电子商务网站建设读书笔记秒收网站
  • 互联网网站 数据库网站优化建设宁夏
  • 网站扫码怎么做的团智慧团建登录入口
  • 哪个网站可以做免费商业推广建设个人网站的要求
  • 4.1.0 EL9410 用于 E-bus 的电源端子模块介绍
  • 网站开发脚本语言农产品网站的品牌建设
  • 从0到1学习Qt -- 常见控件QWidget(二)
  • 网站建设程序文件一台云服务器可以做多个网站
  • Oracle:查询当前正在等待执行的SQL语句
  • 交通信息华建设网站鱼爪网商城网站如何建设
  • 炫酷做网站背景图环保网站建设的目的
  • iOS的runtime的理解以及常用的使用场景有哪些
  • 摘要生成器(Gradio界面)
  • tldraw——一款开源、自托管、支持实时协作的 Web 白板
  • 厚街网站建设报价软文推广平台排名