
二进制+数学
leetcode中的数学题
重you小垃
这个作者很懒,什么都没留下…
展开
-
leetcode189. 轮转数组(中等)
【代码】leetcode189. 轮转数组(中等)原创 2022-10-26 17:46:49 · 453 阅读 · 1 评论 -
leetcode462. 最小操作次数使数组元素相等 II(中等)
【代码】leetcode462. 最小操作次数使数组元素相等 II(中等)原创 2022-10-26 17:02:11 · 357 阅读 · 0 评论 -
leetcode2310. 个位数字为 K 的整数之和(中等,周赛)
方法一:完全背包在包含结尾是k的数组中,每个元素可选多次,和为num的最少个数方法二:考虑个位数->数学问题具体思路:i最少个数为1,最多为num,num只有3000,因此可以试着枚举假设每个元素x= 10m+k即找到最小的i使得num=10m’+ik成立,即:遍历i,使得 (num-i k)%10==0 ,找到即return i......原创 2022-06-30 21:20:32 · 211 阅读 · 0 评论 -
leetcode2001.可互换矩形的组数(中等,周赛)
class Solution {public: long long interchangeableRectangles(vector<vector<int>>& rectangles) { //思路:化简->求组合数 map<pair<int, int>, int> mp; long long ans = 0; //10的5次方求组合数,用long long !!! ...原创 2021-09-13 10:39:45 · 138 阅读 · 0 评论 -
leetcode36.有效的数独(中等)
思路: 依次对每行每列,3×3的正方形判断即可。注意1:用位运算判断重复更巧妙一点2:别忘记了判断每行每列!!!class Solution {public: bool judge(vector<vector<char>>& board, int m, int n); bool isValidSudoku(vector<vector<char>>& board) { //对每一...原创 2021-09-29 10:47:01 · 149 阅读 · 0 评论 -
leetcode191.位1的个数(简单)
方法一:每位依次判断 O(32)class Solution {public: int hammingWeight(uint32_t n) { int ans = 0; for (int i = 0; i < 32; ++i) { if (n & (1 << i)) ans++; } return ans; }};方法二:复杂度优化 O(log...原创 2022-03-04 22:27:19 · 110 阅读 · 0 评论 -
leetcode8.字符串转换整数(中等) offer 67.把字符串转换为整数(中等)
class Solution {public: //1个字节:最大0111,1111 最小 1000,0000 范围是-128到127 const int MAX = ~(1 << 31); const int MIN = (1 << 31); int strToInt(string str) { if (str.length() == 0) return 0; int len = str.length()....原创 2020-12-07 22:08:47 · 112 阅读 · 0 评论 -
leetcode69.Sqrt(x) (简单)
思路一:二分 O(logn)class Solution {public: int mySqrt(int x) { //left 小于等于 right 大于 return left int left = -1, right = (1 << 16); while (left + 1 < right) { int mid = left + (right - left) / 2; ...原创 2021-11-25 22:27:52 · 319 阅读 · 0 评论 -
leetcode7.整数反转(中等)
反转后会出现int越界的情况:(1)例如:2…9(十位数的正整数)(2)例如:-2…9(十位数的负整数)自己的解法:用了long longclass Solution {public: int reverse(int x) { long long x1 = x, ans = 0;; int f = 1; if (!x1) return x1; if (x1 < 0) { f = -1; ...原创 2022-01-04 12:05:41 · 472 阅读 · 0 评论 -
leetcode50. Pow(x, n)(中等)
分析:1:n最多可以到9次方,暴力肯定会超时,用快速幂2:n为负数时,先算出-n次方,返回倒数即可思路:快速幂。class Solution {public: double myPow(double x, int n) { bool flag = true; long long n2 = n; // if (n2 < 0) { flag = !flag; n2 = -n2; ..原创 2022-01-11 22:30:30 · 179 阅读 · 0 评论 -
leetcode29.两数相除(中等)
思路:二分乘法:用快速乘来替代。除法:除以2用>>1来替代mod:用不到注意:(dividend / intdivisor)1:如果除法结果溢出,那么需要返回 2^31-1作为答案。因此在编码之前,我们可以首先对于溢出或者容易出错的边界情况进行讨论:dividend讨论:(1)INT_MIN : 1 (ans越界:return INT_MIN) -1(最终结果越界:return INT_MAX)(2)0 : return 02:对于一般的情况,根据除数和被除数的符号,需要考..原创 2022-01-11 22:26:09 · 354 阅读 · 0 评论 -
leetcode319.灯泡开关(中等)
题目转换: 将第一轮和第二轮都看成第i个就反转一个!!!细节:可以发现,4的时候在第1 2 4时进行反转 6时在第1 2 3 6进行反转,如果是平方数,反转次数为奇数,否则为偶数。返回小于等于完全平方数的个数即可。技巧:sqrt(n)就是小于等于n中完全平方数的个数!!!class Solution {public: int bulbSwitch(int n) { return (int)sqrt(n); }};...原创 2021-11-16 17:10:30 · 305 阅读 · 0 评论 -
leetcode172.阶乘后的0(中等)
想要得到10;就必须是因子2×因子5才可以(为一对)。因此:题目转化为1-n所有数字中有多少对(2和5)含有因子2的个数:每隔2个数字,因子为1个2:2 4 6 8 10每隔2 * 2个数字,因子为2个2:4 8 12 16每隔2 * 2 * 2个数字,因子为3个2:8 16 24每隔2 * 2 * 2 * 2个数字,因子为3个2:16 32因此因子2个数分别为:2:14:26:18:310:112:214:116: 45个因子个数同理。。。因此:2的因子数一定大于5...原创 2021-12-16 13:21:37 · 727 阅读 · 0 评论 -
leetcode136.只出现一次的数字(简单)
自己的思路:hash ——>时间:O(n)键值:元素值->出现次数,然后遍历一遍hash表找second==1的键即可。思路二:对hash按照second升序排序 ——>时间:O(nlogn) 复杂度高不推荐!!!易错点: unordered_不能直接用sort排序,要先腾到vector<pair<int, int>>中,再排序。class Solution {public: static bool cmp(pair<int, int&g.原创 2021-10-29 11:15:26 · 158 阅读 · 0 评论 -
leetcode268.丢失的数字(简单)
思路一: 先排序,然后看下标是否符合思路二: hash,看一下哪个没出现过进阶:怎么把空间复杂度限制在O(1)???思路三:异或 ->空间复杂度O(1)细节: 利用了1:0异或a=a2:a异或a=03:异或满足交换率和结合律由于是判断0-n中哪个数字没出现,先把0到n异或,然后把0到n-1下标的元素进行异或,最终得到的就是缺失的那个值class Solution {public: int missingNumber(vector<int>& num...原创 2021-11-06 18:41:07 · 220 阅读 · 0 评论