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

电子商务网站开发难点在线建站平台

电子商务网站开发难点,在线建站平台,无锡做网站优化哪家好,品牌策划论文题目 (LeetCode 611.有效三角形的个数) 给定一个包含非负整数的数组nums,返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3 示…

题目

(LeetCode 611.有效三角形的个数)

给定一个包含非负整数的数组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

解答

三角形三边条件:任意两边之和大于第三边。但如果我们对数组排序后,固定两个较小的边,那么只需满足这两个较小的边之和大于第三边即可。因为排序后,第三边是最大的,所以另外两个条件(固定两个较小边中的任意一个与第三边的和)自然满足。

具体步骤:

  1. 对数组进行排序。
  2. 固定最短边的位置i(从0到n-3),然后固定第二边j(从i+1到n-2),然后通过二分查找或双指针找到最大的k(j+1开始),使得nums[i] + nums[j] > nums[k]。注意:实际上,我们利用双指针技巧,因为当j增加时,满足条件的k值也会增加(因为数组有序,nums[j]增大,那么nums[i]+nums[j]也增大,所以之前满足的k现在依然满足,且k可以继续向后移动)。
  3. 对于每一对(i, j),我们找到满足条件的最大的k,那么从j+1到k-1(包括j+1到k-1)的所有位置都可以作为第三边,所以有(k- 1 - j)个三角形。

但是注意:在代码中,我们并不是每次重新从j+1开始找k,而是利用k的单调性(随着j增大,k只增不减),因此内层循环是O(n)的,整个算法是O(n^2)。以下是代码实现:

class Solution:def triangleNumber(self, nums: List[int]) -> int:nums.sort()  # 先排序count = 0n = len(nums)for i in range(n - 2):  # 第一个数的索引范围if nums[i] == 0:  # 如果第一个数是0,无法组成三角形continuek = i + 2  # 第三个数的起始位置for j in range(i + 1, n - 1):  # 第二个数的索引范围# 找到最大的k,使得nums[i] + nums[j] > nums[k]while k < n and nums[i] + nums[j] > nums[k]:k += 1# 计算有效三角形数量count += k - j - 1return count
http://www.dtcms.com/wzjs/299771.html

相关文章:

  • 如何快速备案网站长沙seo网站排名
  • 绑定ip地址的网站广州seo技术外包公司
  • 编辑不了的wordpressaso优化什么意思是
  • 公司建立网站流程seo广州工作好吗
  • 制作网站的公司注册资本要多少百度关键词购买
  • 棠下手机网站建设建设企业网站多少钱
  • 上海 企矩 网站建设外贸怎么建立自己的网站
  • 上海网站建设 知名做企业软文怎么写
  • 分析网站建设发展措施深圳百度公司地址在哪里
  • 竞争对手网站营销软件代理推广
  • 唯品会网站页面设计关键词优化seo多少钱一年
  • 2016国外网站设计欣赏知乎推广公司
  • 注册公司邮箱潍坊网站建设seo
  • 中国做网站知名的公司网络营销策略的内容
  • 短视频seo排名加盟合肥seo建站
  • 渭南网站建设服务策划网络营销方案
  • 使用java做后台网站关键词排名优化公司哪家强
  • 郑州那个公司做网站好app软件下载站seo教程
  • 金华建设局政务网站流程优化
  • 建网站英语网店推广营销方案
  • ps做网站宽度seo和竞价排名的区别
  • 手机网站制作合同镇江网站建设方案
  • 想学做网站学什么教程广州seo成功案例
  • 医院网站建设联系方式b2b平台有哪几个
  • 怎么在百度做公司网站百度手机seo
  • 门户网站是什么百度集团
  • webview做网站app百度网盘网页版登录首页
  • 西安搜建站科技网站百度知道免费提问
  • 哪家做网站公司好软文网站发布平台
  • wordpress修改时区seo排名工具外包