LeetCode-452. 用最少数量的箭引爆气球
一、C实现
1. 简介
参考: https://blog.csdn.net/zhizhengguan/article/details/124852708
先排序,然后再使用贪心算法,贪最大右边界。
2. C实现
#include <stdio.h> #define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0])) int min_val(int x, int y) { return x < y ? x : y; } int max_val(int x, int y) { return x > y ? x : y; } void do_sort(int (*arr)[2], int sz) { int i, j; int t[2]; for (i = 0; i< sz; i++) { for (j = i; j < sz; j++) { if (arr[i][0] > arr[j][0]) { t[0] = arr[i][0]; t[1] = arr[i][1]; arr[i][0] = arr[j][0]; arr[i][1] = arr[j][1]; arr[j][0] = t[0]; arr[j][1] = t[1]; } } } /* for (i = 0; i< sz; i++) { printf("[%d, %d]\n", arr[i][0], arr[i][1]); } */ } int min_arrow_shot(int (*arr)[2], int sz) { int i, arrow = 1, mr = arr[0][1]; if (sz == 0) return 0; do_sort(arr, sz); //贪最大右边界 for (i = 1; i < sz; i++) { if (mr >= arr[i][0]) { mr = min_val(mr, arr[i][1]); } else { arrow++; mr = arr[i][1]; }; } return arrow; } int main() { int arr[][2] = { {2, 6}, {7, 9}, {5, 9}, {2, 5}, {10, 12}, {4, 8}, {10, 12}, }; int ret = min_arrow_shot(arr, ARRAY_SIZE(arr)); printf("ret=%d\n", ret); //3, 对应的上 return 0; }
分类:
算法
posted on 2025-02-18 16:57 Hello-World3 阅读(0) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
2019-02-18 Android USB Host框架
2019-02-18 Android USB gadget框架学习笔记