leetcode:Fraction to Recurring …

来源:互联网 发布:睡了兄弟的女朋友知乎 编辑:程序博客网 时间:2024/05/16 12:03
Fraction to Recurring Decimal:
题目大意就是给定一个除数被除数,用字符串表示结果,小数循环部分用括号括起来,比如1/3=0.(3)
一开始想到用map储存状态,自然想到直接记录小数的数字,但不太方便。换个角度,我们来存储“状态”,也就是被除数(除数永远是恒定的),然后遇到重复的被除数,则说明开始循环。
思路是对的,连续wa的几次,总结原因还是没有一个清晰的流程图,所以以后写leetcode,一定要把程序流程图分析清楚,本题如下:
1、循环外部计算整数,然后进入循环
2、被除数乘10再除以除数,用一个index记录每个被除数对应的小数位置,每次被除数乘10,index+1。
3、被除数乘10,就变成了一个新的被除数,因此需要先判断是否重复,再把计算结果写入字符串
4、如果被除数乘10仍然小于除数,那么就继续乘10,但乘10之前需要在字符串中加个0,代表本数位的处理结果是0,然后再按照2中的流程走。

Queue Reconstruction by Height:
题目大意是,给定一个数列,如:[[7,0], [4,4], [7,1], [5,0], [6,1],[5,2]],第一个表示身高,第二个表示,在该人之前,有多少个身高大于等于他的。返回符合要求的数列。上例对应符合要求的数列是:[[5,0],[7,0], [5,2], [6,1], [4,4], [7,1]]。
思路是贪心,把原数列按照身高排序,相同身高按照个数从小到大排,然后从前往后逐个插入到ans数组中。这么做的原理在于,假如有[7,a]、[7,b],b>a,那么就把[7,a]先按照要求插入,插入[7,b]时,b有多大就从头往后数多少位,插入即可,因为在这之前插入ans的肯定都是身高大于7的数,或者个数小于b,那么无论如何,b前面的那些pair均是符合要求的。
另外,也在本题验证了,sort传递的谓词(第三个参数)对应的函数,其形参不一定要是引用
阅读全文
0 0
原创粉丝点击