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

C语言 | Leetcode C语言题解之第528题按权重随机选择

题目:

题解:

typedef struct {int* pre;int preSize;int total;
} Solution;Solution* solutionCreate(int* w, int wSize) {Solution* obj = malloc(sizeof(Solution));obj->pre = malloc(sizeof(int) * wSize);obj->preSize = wSize;obj->total = 0;for (int i = 0; i < wSize; i++) {obj->total += w[i];if (i > 0) {obj->pre[i] = obj->pre[i - 1] + w[i];} else {obj->pre[i] = w[i];}}return obj;
}int binarySearch(Solution* obj, int x) {int low = 0, high = obj->preSize - 1;while (low < high) {int mid = (high - low) / 2 + low;if (obj->pre[mid] < x) {low = mid + 1;} else {high = mid;}}return low;
}int solutionPickIndex(Solution* obj) {int x = rand() % obj->total + 1;return binarySearch(obj, x);
}void solutionFree(Solution* obj) {free(obj->pre);free(obj);
}

http://www.mrgr.cn/news/64479.html

相关文章:

  • strncpy_s
  • 学习threejs,使用对象组合
  • 【ACM出版,EI稳定检索】2024年人工智能、数字媒体技术与交互设计国际学术会议(ICADI 2024,11月29-12月1日)
  • GitHub | 发布到GitHub仓库并联文件夹的方式
  • ESP8266 自定义固件烧录-Tcpsocket固件
  • Django视图写法
  • adb 远程调试,手动修改 adb 调试授权信息
  • C++/list
  • 【A】【Maven项目热部署】将Maven项目热部署到远程tomcat服务器上
  • C语言:初识入门篇
  • oracle 月份加减一个月
  • Pinctrl子需要中client端使用pinctrl过程的驱动分析
  • 计算机毕业设计Hadoop+大模型地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据
  • C语言300行-投篮
  • 2、Qt6 Quick 会转的小风车
  • 第二十七章 Vue异步更新之$nextTick
  • 2024年【金属非金属矿山(地下矿山)安全管理人员】复审模拟考试及金属非金属矿山(地下矿山)安全管理人员实操考试视频
  • 计算机的错误计算(一百四十二)
  • 万字长文详解Hive聚合函数 grouping sets、cube、rollup原理、语法、案例和优化
  • 使用 C++ 进行高效序列化和反序列化的实现(优化版本)
  • 数据丢失不用愁!10款必备的数据恢复软件全介绍
  • 线性排序:如何根据年龄给 100 万用户数据排序?
  • 在使用 AMD GPU 的 PyTorch 中实现自动混合精度
  • 【大模型LLM面试合集】大语言模型架构_tokenize分词
  • 软件测试基础四(服务端知识)
  • AUTOSAR从入门到精通-BswM模块(二)