摘要:
用dp[i]表示组成i的最少的完全平方数的个数。 如果有一个j, 1<=j且jj ⇐ i,如果j的平方是组成i的完全平方数的其中之一个完全平方数,则可以考虑用dp[i - j * j]来更新dp[i]。 即dp[i] = min(dp[i], dp[i - j * j] + 1); 表示组成i的最少 阅读全文
posted @ 2020-08-28 09:52
machine_gun_lin
阅读(127)
评论(0)
推荐(0)
摘要:
调用题目给的API,二分查找第一个错误的版本。 // The API isBadVersion is defined for you. // bool isBadVersion(int version); class Solution { public: int firstBadVersion(in 阅读全文
posted @ 2020-08-28 09:42
machine_gun_lin
阅读(82)
评论(0)
推荐(0)
摘要:
class Solution { public: int hIndex(vector<int>& citations) { int n = citations.size(); int res = 0; for(int i = n - 1; i >= 0; --i) { if(citations[i] 阅读全文
posted @ 2020-08-28 09:37
machine_gun_lin
阅读(92)
评论(0)
推荐(0)
摘要:
对所有citations排序,然后从大到小找第一个满足条件的那个citations就是H指数。 class Solution { public: int hIndex(vector<int>& citations) { int res = 0; int n = citations.size(); c 阅读全文
posted @ 2020-08-28 09:32
machine_gun_lin
阅读(69)
评论(0)
推荐(0)
摘要:
英文里每三位就有个逗号,所以我们单独写一个函数处理每三位数之间的表示,然后再根据当前处理的三位数的位数来决定后面是否要加上"thousand","million"啥的。 代码如下: class Solution { public: unordered_map<int, string> numInEn 阅读全文
posted @ 2020-08-28 09:27
machine_gun_lin
阅读(278)
评论(0)
推荐(0)
摘要:
0~n有n+1个数,可以根据等差数列求和公式快速算出总和。减去nums数组的n个数,就能在线性时间内算出缺少了哪个数。 class Solution { public: int missingNumber(vector<int>& nums) { int n = nums.size(); int e 阅读全文
posted @ 2020-08-28 09:15
machine_gun_lin
阅读(104)
评论(0)
推荐(0)
摘要:
因为丑数的因子只有2,3,5,所以我们可以用三指针指向当前最大的三个丑数,下一个丑数必然是当前最大的三个丑数×2、×3、×5得到的三个数中 最小的那一个。 得到新的丑数之后,做了乘法的那个指针就往前移动,这样三个指针时刻指向最大的三个丑数。 class Solution { public: int 阅读全文
posted @ 2020-08-28 09:09
machine_gun_lin
阅读(97)
评论(0)
推荐(0)
摘要:
如果一个数只包含这几个质因子,那就不断的除以这几个质因子,最后如果只剩下1,就是丑数。 class Solution { public: bool isUgly(int num) { while(num >= 5 && num % 5 == 0) { num /= 5; } while(num >= 阅读全文
posted @ 2020-08-28 08:59
machine_gun_lin
阅读(61)
评论(0)
推荐(0)
摘要:
我们知道两个相同的数异或之后就为0,所以对于nums数组中的所有数,异或之后的结果就是那两个只出现一次的数异或的值。 这个值必然不为0(因为这两个数是不同的),所以这个数的二进制表示里,从低位往高位必然有一位1,这一位是1,说明这两个数 在这一位的二进制表示不同(因为这个数是异或得到的),我们可以以 阅读全文
posted @ 2020-08-28 08:53
machine_gun_lin
阅读(70)
评论(0)
推荐(0)