力扣(LeetCode)976. 三角形的最大周长

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的、面积不为零的三角形的最大周长。

如果不能形成任何面积不为零的三角形,返回 0。

示例 1:

输入:[2,1,2]
输出:5

示例 2:

输入:[1,2,1]
输出:0

示例 3:

输入:[3,2,3,4]
输出:10

示例 4:

输入:[3,6,2,3]
输出:8

提示:

3 <= A.length <= 10000
1 <= A[i] <= 10^6

思路 先将数组从小到大排序,然后从后往前遍历相邻最大的满足条件的三位数(三角形较小两边之和大于第三边)

Java版

class Solution {
    public int largestPerimeter(int[] A) {
        Arrays.sort(A);
        int max = 0;
        for(int i=A.length-1;i>=2;i--) {
            if(A[i-1]+A[i-2]>A[i]) {
                return A[i-1]+A[i-2]+A[i];
            }
        }
        return 0;

    }
}

运行结果

原文地址:https://www.cnblogs.com/lick468/p/10679147.html

时间: 2024-11-10 17:45:16

力扣(LeetCode)976. 三角形的最大周长的相关文章

LeetCode(976. 三角形的最大周长)

问题描述 给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的.面积不为零的三角形的最大周长. 如果不能形成任何面积不为零的三角形,返回 0. 示例 1: 输入:[2,1,2] 输出:5 示例 2: 输入:[1,2,1] 输出:0 示例 3: 输入:[3,2,3,4] 输出:10 示例 4: 输入:[3,6,2,3] 输出:8 解决方案 class Solution: def largestPerimeter(self, A): """ :type A: Lis

976. 三角形的最大周长

给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的.面积不为零的三角形的最大周长. 如果不能形成任何面积不为零的三角形,返回 0. 示例 1: 输入:[2,1,2] 输出:5 示例 2: 输入:[1,2,1] 输出:0 示例 3: 输入:[3,2,3,4] 输出:10 示例 4: 输入:[3,6,2,3] 输出:8 提示: 3 <= A.length <= 10000 1 <= A[i] <= 10^6 思路 不失一般性的,我们假设三角形的边长满足 a \leq b

976. 三角形的最大周长(冒泡排序法的活用)

在刷这道题时,受到别人的启发,并在其基础上改进了一下. 1.三边构成三角形的充分必要条件是:较小的两边之和大于第三边 2.用Arrays.sort(),时间复杂度为O(n2) 3.在这里用冒泡排序法,最好的结果就排序3趟,时间为3n,最坏的结果n2 4.冒泡排序法中,当某一趟没有交换时,排序完成.这里照搬过来,但是不能直接退出循环,还是要继续比较是否为三角形. 1 class Solution { 2 public int largestPerimeter(int[] A) { 3 Arrays

力扣LeetCode,两个数组的交集 II

1.给定两个数组,编写一个函数来计算它们的交集. 示例 1: 1 输入: nums1 = [1,2,2,1], nums2 = [2,2] 2 输出: [2,2] 示例 2: 1 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4] 2 输出: [4,9] 说明: 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致. 我们可以不考虑输出结果的顺序. 进阶: 如果给定的数组已经排好序呢?你将如何优化你的算法? 如果 nums1 的大小比 nums2 小很多

976 三角形的最大周长--重要

虽然是简单题,但是花费了自己不少时间!! 1.想用计数排序,结果还写错了,真的难受!!,最后还是用的vector的自动排序指令,sort,刚开始自己忘了!! 2.思路 排序:排序的是遍历的前提 从最右边的数遍历,三个连续的,最小的加第二小大于最大的就返回值,否则,最右边的数向左边移一位,不要再犯程序中的错误了好吗!!! 注意.一定有返回值,return 0 3.代码 1 //之前自己没写过排序算法,今天第一次用计数排序,刚刚在上一题数组相对排序中学到的 2 //发现了自己的错误,已经排序了!如果

LeetCode 5097. 力扣排行榜

地址 https://www.acwing.com/solution/LeetCode/content/5765/ 题目描述新一轮的「力扣杯」编程大赛即将启动,为了动态显示参赛者的得分数据,需要设计一个排行榜 Leaderboard. 请你帮忙来设计这个 Leaderboard 类,使得它有如下 3 个函数: addScore(playerId, score):假如参赛者已经在排行榜上,就给他的当前得分增加 score 点分值并更新排行.假如该参赛者不在排行榜上,就把他添加到榜单上,并且将分数设

LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现

题目描述: python实现 Search in Rotated Sorted Array 搜索旋转排序数组   中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 . 你可以假设数组中不存在重复的元素. 你的算法时间复杂度必须是 O(log n) 级别. 英文:Suppose an array sorted i

LeetCode976 三角形的最大周长(Java排序简单应用-防自闭题)

题目: 给定由一些正数(代表长度)组成的数组 A,返回由其中三个长度组成的.面积不为零的三角形的最大周长. 如果不能形成任何面积不为零的三角形,返回 0. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/largest-perimeter-triangle 思路: 我们将数组A按从大到小的顺序排序,然后从头往后三个三个的撸,只要这三个中较小的两个的和大于最大就可以组成一个三角形. 简单分析一下为什么只用考虑两个的和大于最大的就可以: 假设有

力扣sql题

组合两个表 表1: Person +-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+PersonId 是上表主键表2: Address +-------------+---------+| 列名 | 类型 |+-------------+-------