假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对(h, k)表示,其中h是这个人的身高,k是排在这个人前面且身高大于或等于h的人数。 编写一个算法来重建这个队列。

注意:

总人数少于1100人。

示例

输入:

[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]

输出:

[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/queue-reconstruction-by-height

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

见到数组考虑是否排序,排序就直接选择qsort.

此题也是先排序,但有点特殊的是二维数组qsort排序,comp函数如何写要理解记住。

接着就是数组的插入操作,同 ‘315. 计算右侧小于当前元素的个数(H)’题,C语言很容易在这里卡死。

此题思想就是先按照身高降序(身高相同按k升序),然后根据根据k值选择插入位置。

当然一如既往的要注意C语言内存申请,returnColumnSizes的处理,此处较恶心,多做几道类似的就习惯了,谁叫你用C语言刷题呢。

void insert(int** people, int size, int *toBeInserted, int index)

{

int i = size;

while (i > index) {

people[i] = people[i-1];

i--;

}

people[index] = toBeInserted;

}

int Comp(void const *a, void const *b) {

int *onea = *(int **)a;

int *oneb = *(int **)b;

if (onea[0] == oneb[0]) {

return (onea[1] - oneb[1]);

}

return (oneb[0] - onea[0]);

}

int** reconstructQueue(int** people, int peopleSize, int* peopleColSize, int* returnSize, int** returnColumnSizes)

{

int i;

int **retarr;

retarr = (int **)malloc(sizeof(int *) * peopleSize);

returnColumnSizes[0] = (int *)malloc(sizeof(int) * peopleSize);

for (i = 0; i < peopleSize; i++) {

retarr[i] = (int *)malloc(sizeof(int) * 2);

returnColumnSizes[0][i] = 2;

memset(retarr[i], 0, sizeof(int) * 2);

}

qsort(people, peopleSize, sizeof(people[0]), Comp);

for (i = 0; i < peopleSize; i++) {

insert(retarr, i, people[i], people[i][1]);

}

*returnSize = peopleSize;

return retarr;

}

c语言编程 插队排身高,【C语言刷LeetCode】406. 根据身高重建队列(M)相关推荐

  1. 高斯消元法的c语言编程,列主元高斯消元法的C语言编程

    列主元高斯消元法的C语言编程 列主元高斯消元法 基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第k步消元前,应该在第k列(k)元素aik(i k,(k)(k)例如|aikk| max| ...

  2. c语言程序设计自学跟谁好,双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好...

    双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好 首页 > 软件 > 双辽c语言编程学习 作者:镀金池   发布时间:2017-12-07 05:48 一个C语 ...

  3. c语言程序设计需要学多久,九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会...

    九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会 首页 > C语言 > 九江c语言编程学习 作者:镀金池   发布时间:2017-10-18 14:11 据ID ...

  4. c语言编程期刊论文管理系统,C语言编程下计算机软件论文

    1计算机软件C语言的编程实验 1.1计算机软件C语言的编程技巧 计算机软件C语言的编程中,最主要的依据是指针应用,C语言指针能够根据软件程序的编写需求,构建可行的函数,而程序员在设计函数编程的过程中, ...

  5. c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...

    丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池   发布时间:2018-04-09 16:40 在之后 ...

  6. 江门C语言培训,江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样...

    江门c语言编程学习,江门学c语言编程培训,江门学c语言编程效果怎么样 首页 > C语言 > 江门c语言编程学习 作者:镀金池   发布时间:2017-10-18 09:25 在初期的C语言 ...

  7. C语言报名里面培训怎么填,庄河c语言编程学习,庄河学c语言编程培训,庄河学c语言编程报个培训班怎么样...

    庄河c语言编程学习,庄河学c语言编程培训,庄河学c语言编程报个培训班怎么样 首页 > 软件 > 庄河c语言编程学习 作者:镀金池   发布时间:2017-11-29 11:13 明天利用时 ...

  8. 罗定c语言,罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费...

    罗定学c语言编程,罗定学c语言编程培训,罗定学c语言编程一般怎么收费 首页 > 软件 > 罗定学c语言编程 作者:镀金池   发布时间:2018-10-04 23:40 依照c语言的法则, ...

  9. 安庆师范大学c语言程序设计,安庆c语言编程学习,安庆学c语言编程培训,安庆学c语言编程一般能拿多少工资...

    安庆c语言编程学习,安庆学c语言编程培训,安庆学c语言编程一般能拿多少工资 首页 > C语言 > 安庆c语言编程学习 作者:镀金池   发布时间:2017-10-18 15:20 假定我们 ...

最新文章

  1. 大二暑假周进度报告之四
  2. 在linux下安装星际译王
  3. 机器学习基础 --- numpy的基本使用
  4. C#中split的用法
  5. Loj#6053-简单的函数【Min25筛】
  6. C++三路比较运算符
  7. halcon 将数据保存到excel_pandas筛选、合并、批量保存excel数据
  8. org.springframework.beans.BeanUtils
  9. java jdom追加节点_java-使用xpath和jdom选择一个节点
  10. 桌面壁纸的deepin或者uos水印如何去除
  11. 对路径的访问被拒绝怎么办_工作组计算机无法访问,教您无法访问工作组计算机的解决技巧...
  12. c++开源库rapidxml介绍与示例
  13. 【开箱】索尼A6000微单入手
  14. 图片转化成emf等格式的办法
  15. CentOS上安装 Docker-CE以及Docker 加速器配置
  16. Flash:一个TLF图文并貌的高级应用类
  17. 3万字通俗易懂告诉你什么是.NET?什么是.NET Framework?什么是.NET Core?
  18. [转载]999只纸鹤,999个爱你的理由…… 【1】
  19. 【电商】电商后台---FMS财务管理系统
  20. 禁用word 2007里面的信息检索功能

热门文章

  1. 中兴zxr10路由器重启命令_中兴路由器ZXR10 版本恢复纪要
  2. 第四范式冲刺港股IPO:上半年收入近8亿元,戴文渊夫妇持股41%
  3. selenium+testng二之following-sibling使用WebDriverWait
  4. mother的含义,母亲节赞美母亲的优美诗句
  5. 联想手机android 通讯同步,联想乐同步:智能手机信息的云备份工具
  6. 计算机网络第一章笔记总结
  7. linux系统学习笔记8——LiuxCNC镜像系统安装步骤
  8. ZQOJ 1141: 进制转换
  9. SQL学习(3)——表的复杂查询与函数操作
  10. 易飞LRP运算注意事项