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

C语言 | Leetcode C语言题解之第332题重新安排行程

题目:

题解:

char* id2str[26 * 26 * 26];int str2id(char* a) {int ret = 0;for (int i = 0; i < 3; i++) {ret = ret * 26 + a[i] - 'A';}return ret;
}int cmp(const void* _a, const void* _b) {int **a = (int**)_a, **b = (int**)_b;return (*b)[0] - (*a)[0] ? (*b)[0] - (*a)[0] : (*b)[1] - (*a)[1];
}int* vec[26 * 26 * 26];
int vec_len[26 * 26 * 26];
int* stk;
int stk_len;void dfs(int curr) {while (vec_len[curr] > 0) {int tmp = vec[curr][--vec_len[curr]];dfs(tmp);}stk[stk_len++] = curr;
}char** findItinerary(char*** tickets, int ticketsSize, int* ticketsColSize, int* returnSize) {memset(vec_len, 0, sizeof(vec_len));stk = malloc(sizeof(int) * (ticketsSize + 1));stk_len = 0;int* tickets_tmp[ticketsSize];for (int i = 0; i < ticketsSize; i++) {tickets_tmp[i] = (int*)malloc(sizeof(int) * 2);tickets_tmp[i][0] = str2id(tickets[i][0]);tickets_tmp[i][1] = str2id(tickets[i][1]);id2str[tickets_tmp[i][0]] = tickets[i][0];id2str[tickets_tmp[i][1]] = tickets[i][1];}qsort(tickets_tmp, ticketsSize, sizeof(int*), cmp);int add = 0;while (add < ticketsSize) {int adds = add + 1, start = tickets_tmp[add][0];while (adds < ticketsSize && start == tickets_tmp[adds][0]) {adds++;}vec_len[start] = adds - add;vec[start] = malloc(sizeof(int) * vec_len[start]);for (int i = add; i < adds; i++) {vec[start][i - add] = tickets_tmp[i][1];}add = adds;}dfs(str2id("JFK"));*returnSize = ticketsSize + 1;char** ret = malloc(sizeof(char*) * (ticketsSize + 1));for (int i = 0; i <= ticketsSize; i++) {ret[ticketsSize - i] = id2str[stk[i]];}return ret;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Android 下载安装配置
  • 探索Python模块搜索路径的奥秘
  • Python中的责任链模式:构建灵活的请求处理机制
  • Python知识点:使用FastAI进行快速深度学习模型构建
  • 初学java第一天:写一下熟悉的猜数字小游戏
  • C#类继承自泛型集合
  • Linux 进程调度(二)之进程的上下文切换
  • Vue2与Vue3响应式原理对比
  • 基于cookie的会话保持
  • linux的UDP通讯方式
  • 暑期破防实录——捡漏腾讯
  • 【多线程】乐观/悲观锁、重量级/轻量级锁、挂起等待/自旋锁、公平/非公锁、可重入/不可重入锁、读写锁
  • 第三次北漂,入职UE
  • Flink 常见问题汇总:反压积压,checkpoint报错,窗口计算,作业报错,无产出,流批不一致,调优等。
  • EasyX自学笔记3(割草游戏2)
  • 2017-08-04 前端日报
  • Apache Spark Streaming 使用实例
  • express如何解决request entity too large问题
  • Go 语言编译器的 //go: 详解
  • GraphQL学习过程应该是这样的
  • iOS编译提示和导航提示
  • Java 内存分配及垃圾回收机制初探
  • Java教程_软件开发基础
  • jquery ajax学习笔记
  • JS+CSS实现数字滚动
  • JS基础之数据类型、对象、原型、原型链、继承
  • Laravel核心解读--Facades
  • mongo索引构建
  • mysql 5.6 原生Online DDL解析
  • rabbitmq延迟消息示例
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • sublime配置文件
  • 测试开发系类之接口自动化测试
  • 大快搜索数据爬虫技术实例安装教学篇
  • 基于HAProxy的高性能缓存服务器nuster
  • 入门到放弃node系列之Hello Word篇
  • 手写一个CommonJS打包工具(一)
  • 详解移动APP与web APP的区别
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • Java数据解析之JSON
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • 整理一些计算机基础知识!
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​zookeeper集群配置与启动
  • (152)时序收敛--->(02)时序收敛二
  • (备份) esp32 GPIO
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (七)Knockout 创建自定义绑定
  • (强烈推荐)移动端音视频从零到上手(上)
  • (三)c52学习之旅-点亮LED灯
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)淘淘商城系列——使用Spring来管理Redis单机版和集群版