热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

leetcode455.AssignCookies(C语言,堆排序)28

贴原题:Assumeyouareanawesomeparentandwanttogiveyourchildrensomecookies.But,youshouldgi

贴原题:

Assume you are an awesome parent and want to give your children some COOKIEs. But, you should give each child at most one COOKIE. Each child i has a greed factor gi, which is the minimum size of a COOKIE that the child will be content with; and each COOKIE j has a size sj. If sj >= gi, we can assign the COOKIE j to the child i, and the child i will be content. Your goal is to maximize the number of your content children and output the maximum number.

Note: You may assume the greed factor is always positive. You cannot assign more than one COOKIE to one child.

Example 1: Input: [1,2,3], [1,1]

Output: 1

Explanation: You have 3 children and 2 COOKIEs. The greed factors of 3 children are 1, 2, 3. And even though you have 2 COOKIEs, since their size is both 1, you could only make the child whose greed factor is 1 content. You need to output 1.

Example 2: Input: [1,2], [1,2,3]

Output: 2

Explanation: You have 2 children and 3 COOKIEs. The greed factors of 2 children are 1, 2. You have 3 COOKIEs and their sizes are big enough to gratify all of the children, You need to output 2.

解析:
  本题的题目说的有点复杂,简单来说就是给出两个数组,求数组2big enough于数组2元素的个数。换言之,就是求数组2中元素>=数组1中元素的个数。
  我的思路很简单,就是把两个数组从小到大排序,然后依次比较各位元素的大小,如果big enough则计数器加一,否则换数组2中下一个较大的值与之比较,直到其中一个数组的元素都比较完。

C代码:

void heapAjust(int* array, int size, int root)//堆调整,构建最大顶堆
{int left=2*root;int right=left+1;int largest=root;if(leftarray+left)>*(array+largest)){largest=left;}if(rightarray+right)>*(array+largest)){largest=right;}if(largest!=root){*(array+largest)=*(array+largest)^*(array+root);*(array+root)=*(array+largest)^*(array+root);*(array+largest)=*(array+largest)^*(array+root);heapAjust(array, size, largest);}
}
void heapSort(int* array, int size)//堆排序
{for(int i=size/2; i>=0; i--){heapAjust(array, size, i);}for(int i=size-1; i>0; i--){*array=*array^*(array+i);*(array+i)=*array^*(array+i);*array=*array^*(array+i);heapAjust(array, i, 0);}
}
int findContentChildren(int* g, int gSize, int* s, int sSize) {heapSort(g, gSize);heapSort(s, sSize);int cnt&#61;0;//计数器int i&#61;0, j&#61;0;while(iif(*(g&#43;i)<&#61;*(s&#43;j))//big enough{cnt&#43;&#43;;//计数器加一i&#43;&#43;;//继续比较下一个j&#43;&#43;;}else//否则用s数组的下一个较大值与当前g[i]做比较{j&#43;&#43;;}}return cnt;
}


推荐阅读
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 《2017年3月全国计算机等级考试二级C语言上机题库完全版》由会员分享,可在线阅读,更多相关《2017年3月全国计算机等级考试二级C语言上机题库完全版( ... [详细]
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • c语言基础编写,c语言 基础
    本文目录一览:1、C语言如何编写?2、如何编写 ... [详细]
  • 利用空间换时间减少时间复杂度以及以C语言字符串处理为例减少空间复杂度
    在处理字符串的过程当中,通常情况下都会逐个遍历整个字符串数组,在多个字符串的处理中,处理不同,时间复杂度不同,这里通过利用空间换时间等不同方法,以字符串处理为例来讨论几种情况:1: ... [详细]
author-avatar
~~~
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有