实例要求:
- 1、给定由一些正数(
代表长度
)组成的数组 nums
; - 2、返回 由其中
三个长度组成的、面积不为零
的三角形的最大周长
; - 3、如果
不能形成任何面积不为零
的三角形,返回 0
;
案例展示:
实例分析:
-
1、引入
qsort函数和自定义cmp函数
解决问题; -
2、对所有的元素快速排序后,取最大的三个边长,并判断是否满足三角形周长;
-
3、若满足条件就返回最大周长,不满足则返回0;
-
qsort函数:
void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))/*参数:base //指向要排序的数组的第一个元素的指针nitems //由 base 指向的数组中元素的个数size //数组中每个元素的大小,以字节为单位compar //用来比较两个元素的函数*/
- 自定义cmp函数:
//对int数组升序排序int cmp(const void *a ,const void *b){return *(int *)a-*(int *)b;}
示例代码:
int cmp(const void *a ,const void *b){return *(int *)a-*(int *)b;}int largestPerimeter(int* nums, int numsSize) {qsort(nums, numsSize, 4, cmp); // 对数组进行升序排序for (int i = numsSize - 1; i >= 2; i--) {if (nums[i] < nums[i-1] + nums[i-2]) {return nums[i] + nums[i-1] + nums[i-2]; // 返回最大周长}}return 0;}
运行结果: