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

C语言 | Leetcode C语言题解之第321题拼接最大数

题目:

题解:

int compare(int* subseq1, int subseq1Size, int index1, int* subseq2, int subseq2Size, int index2) {while (index1 < subseq1Size && index2 < subseq2Size) {int difference = subseq1[index1] - subseq2[index2];if (difference != 0) {return difference;}index1++;index2++;}return (subseq1Size - index1) - (subseq2Size - index2);
}int* merge(int* subseq1, int subseq1Size, int* subseq2, int subseq2Size) {if (subseq1Size == 0) {return subseq2;}if (subseq2Size == 0) {return subseq1;}int mergeLength = subseq1Size + subseq2Size;int* merged = malloc(sizeof(int) * (subseq1Size + subseq2Size));int index1 = 0, index2 = 0;for (int i = 0; i < mergeLength; i++) {if (compare(subseq1, subseq1Size, index1, subseq2, subseq2Size, index2) > 0) {merged[i] = subseq1[index1++];} else {merged[i] = subseq2[index2++];}}return merged;
}int* MaxSubsequence(int* nums, int numsSize, int k) {int* stack = malloc(sizeof(int) * k);memset(stack, 0, sizeof(int) * k);int top = -1;int remain = numsSize - k;for (int i = 0; i < numsSize; i++) {int num = nums[i];while (top >= 0 && stack[top] < num && remain > 0) {top--;remain--;}if (top < k - 1) {stack[++top] = num;} else {remain--;}}return stack;
}void swap(int** a, int** b) {int* tmp = *a;*a = *b, *b = tmp;
}int* maxNumber(int* nums1, int nums1Size, int* nums2, int nums2Size, int k, int* returnSize) {int* maxSubsequence = malloc(sizeof(int) * k);memset(maxSubsequence, 0, sizeof(int) * k);*returnSize = k;int start = fmax(0, k - nums2Size), end = fmin(k, nums1Size);for (int i = start; i <= end; i++) {int* subseq1 = MaxSubsequence(nums1, nums1Size, i);int* subseq2 = MaxSubsequence(nums2, nums2Size, k - i);int* curMaxSubsequence = merge(subseq1, i, subseq2, k - i);if (compare(curMaxSubsequence, k, 0, maxSubsequence, k, 0) > 0) {swap(&curMaxSubsequence, &maxSubsequence);}}return maxSubsequence;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 免费自动化AI视频剪辑工具
  • 深入解析Apache Flink中的事件时间与处理时间
  • 使用TensorRT对YOLOv8模型进行加速推理
  • 解决方案:Cannot write to ‘torch-2.0.1+cu118-cp310-cp310-linux_x86_64.whl.3’ (成功).
  • 我的256天创作纪念日
  • 《学会 SpringMVC 系列 · 剖析初始化》
  • 学习分享:电商平台 API 接入技术要点深度剖析
  • 分享一个简单线性dp
  • 2024 年华数杯全国大学生数学建模竞赛题目B 题 VLSI 电路单元的自动布局完整成品文章分享
  • C++——哈希结构
  • 中国县城建设统计年鉴(2015-2022年)
  • 基础算法之模拟
  • RK3568笔记五十二:HC-SR04超声波模块驱动测试
  • modbus控制传感器
  • PHP单例模式详解及应用
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • “大数据应用场景”之隔壁老王(连载四)
  • Docker: 容器互访的三种方式
  • Intervention/image 图片处理扩展包的安装和使用
  • Javascript设计模式学习之Observer(观察者)模式
  • java概述
  • Python实现BT种子转化为磁力链接【实战】
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 分布式任务队列Celery
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 王永庆:技术创新改变教育未来
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #WEB前端(HTML属性)
  • (06)Hive——正则表达式
  • (2)空速传感器
  • (2015)JS ES6 必知的十个 特性
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (javascript)再说document.body.scrollTop的使用问题
  • (差分)胡桃爱原石
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (规划)24届春招和25届暑假实习路线准备规划
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (四)React组件、useState、组件样式
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)创业的注意事项
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .Net core 6.0 升8.0
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Project Open Day(2011.11.13)
  • .Net 应用中使用dot trace进行性能诊断
  • .Net6 Api Swagger配置
  • .NET构架之我见
  • .NET面试题(二)
  • .net中生成excel后调整宽度
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @WebService和@WebMethod注解的用法
  • [30期] 我的学习方法