位运算+数学
文章平均质量分 52
位运算
answer_yym
且随疾风前行
展开
-
罗马数字相互转换
通常情况下,罗马数字中小的数字在大的数字的右边。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为 IX。例如, 罗马数字 2 写做 II ,即为两个并列的 1。C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。罗马转数字,遍历字符串,分类讨论,直接写。原创 2024-07-10 10:38:48 · 343 阅读 · 0 评论 -
分糖果 2 (循环递增分)& 3 (根据得分 分)
然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。第四次,ans[3] += 1(因为此时只剩下 1 颗糖果),最终数组变为 [1,2,3,1]。n 个孩子站成一排。第一次,ans[0] += 1,数组变为 [1,0,0,0]。第二次,ans[1] += 2,数组变为 [1,2,0,0]。第三次,ans[2] += 3,数组变为 [1,2,3,0]。第二次,ans[1] += 2,数组变为 [1,2,0]。原创 2024-07-09 12:40:35 · 695 阅读 · 0 评论 -
加油站_循环到达
你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你无法返回 2 号加油站,因为返程需要消耗 4 升汽油,但是你的油箱只有 3 升汽油。输入: gas = [1,2,3,4,5], cost = [3,4,5,1,2]开往 3 号加油站,你需要消耗 5 升汽油,正好足够你返回到 3 号加油站。开往 0 号加油站,此时油箱有 4 - 3 + 2 = 3 升汽油。开往 1 号加油站,此时油箱有 3 - 3 + 3 = 3 升汽油。原创 2024-07-09 10:58:19 · 711 阅读 · 0 评论 -
求一个数组中的众数,出现次数最多
1、描述数组中占比超过一半的元素称之为主要元素。给定一个整数数组,找到它的主要元素。若没有,返回-1。示例 1:输入:[1,2,5,9,5,9,5,5,5]输出:5来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-majority-element-lcci著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字众数、数组。3、思路想到位运算,不同数字的两个两两抵消,最后剩下的肯定是众数,但是会有一种可能原创 2020-12-06 22:07:37 · 739 阅读 · 1 评论 -
超级平方,快速幂
你的任务是计算 ab 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。示例 1:输入:a = 2, b = [3]输出:8示例 2:输入:a = 2, b = [1,0]输出:1024来源:力扣(LeetCode)链接:著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字平方3、思路快速幂4、notes1、一个公式:(a * b) % k = [(a % k) * (b % k)] % k2、快速幂mypow(i原创 2021-12-05 16:21:59 · 855 阅读 · 0 评论 -
猜数字游戏
1、描述你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:猜测数字中有多少位属于数字和确切位置都猜对了(称为 “Bulls”, 公牛),有多少位属于数字猜对了但是位置不对(称为 “Cows”, 奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。给你一个秘密数字 secret 和朋友猜测的数字 guess ,请你返回对朋友这次猜测的提示。提示的格式为原创 2021-11-08 09:24:41 · 1677 阅读 · 0 评论 -
接雨水一维
1、描述42给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] 表示的高度图,在这种情况下,可以接 6 个单位的雨水(蓝色部分表示雨水)。 感谢 Marcos 贡献此图。来源:力扣(LeetCode)链接:著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、思路 双指针、动态规划、单调栈、观察法3、notesmax_element(nums.begi原创 2021-11-03 10:45:41 · 159 阅读 · 0 评论 -
123456,n每行个数,给总个数,求行数
1、描述你总共有 n 枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字 n ,计算并返回可形成 完整阶梯行 的总行数。来源:力扣(LeetCode)链接:著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字等差数列3、思路二分查找数学公式,直接求右边的解,然后向下取整。4、notes注意:强制类型转换的范围,数字会变大5、复杂度二分时间:O(logN)空间原创 2021-10-10 22:26:12 · 249 阅读 · 0 评论 -
分数到小数
1、描述给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以 字符串形式返回小数 。如果小数部分为循环小数,则将循环的部分括在括号内。如果存在多个答案,只需返回 任意一个 。对于所有给定的输入,保证 答案字符串的长度小于 104 。示例 1:输入:numerator = 1, denominator = 2输出:“0.5”示例 2:输入:numerator = 2, denominator = 1输出:“2”来源:力扣(LeetCode)链接:著原创 2021-10-03 14:17:28 · 90 阅读 · 0 评论 -
二进制手表,1的个数可能的时间
1、描述二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。每个 LED 代表一个 0 或 1,最低位在右侧。例如,下面的二进制手表读取 “3:25” 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-watch著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字二进制手表,根据1的个数,求可能的时间点,3、思路暴力两成循环,外层是小时,内层是原创 2021-10-02 11:45:28 · 208 阅读 · 0 评论 -
数字转换为十六进制数
1、描述给定一个整数,编写一个算法将这个数转换为十六进制数。对于负整数,我们通常使用 补码运算 方法。注意:十六进制中所有字母(a-f)都必须是小写。十六进制字符串中不能包含多余的前导零。如果要转化的数为0,那么以单个字符’0’来表示;对于其他情况,十六进制字符串中的第一个字符将不会是0字符。给定的数确保在32位有符号整数范围内。不能使用任何由库提供的将数字直接转换或格式化为十六进制的方法。示例 1:输入:26输出:“1a”来源:力扣(LeetCode)链接:https://lee原创 2021-10-02 11:35:46 · 5565 阅读 · 0 评论 -
矩形面积求一下
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给你 二维 平面上两个 由直线构成的 矩形,请你计算并返回两个矩形覆盖的总面积。每个矩形由其 左下 顶点和 右上 顶点坐标表示:第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。第二个矩形由其左下顶点 (bx1, by1) 和右上顶点 (bx2, by2) 定义。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/rectangle原创 2021-09-30 10:48:14 · 95 阅读 · 0 评论 -
判断一个数字是3的幂
1、描述给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x示例 1:输入:n = 27输出:true示例 2:输入:n = 0输出:false来源:力扣(LeetCode)链接:著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字幂3、思路直接除以3,看是否能被整除,排除负数和0,4、复杂度logN6、codeclass原创 2021-09-23 11:04:15 · 1956 阅读 · 0 评论 -
c++实现atoi【string转成整数或者浮点数】
6、codeclass Solution {public: int myAtoi(string str) { const char *p = str.c_str(); for(; p != nullptr && *p == ' '; p++) {} if(p == nullptr || (*p != '+' && *p != '-' && (*p < '0' || *p > '9')))原创 2021-09-17 16:22:02 · 235 阅读 · 0 评论 -
回旋镖的数量
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给定平面上 n 对 互不相同 的点 points ,其中 points[i] = [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的距离和 i 和 k 之间的距离相等(需要考虑元组的顺序)。返回平面上所有回旋镖的数量。示例 1:输入:points = [[0,0],[1,0],[2,0]]输出:2解释:两个回旋镖为 [[1,0],[0,0],[2,0]] 和 [[1,0],原创 2021-09-13 10:45:31 · 101 阅读 · 0 评论 -
两个链表实现加法
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。来源:力扣(LeetCode)链接:著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字链表,相加3、思路就是直接相加,搞一个进位权值power4、not原创 2021-09-08 16:03:19 · 141 阅读 · 0 评论 -
二进制求和
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述二进制求和给你两个二进制字符串,返回它们的和(用二进制表示)。输入为 非空 字符串且只包含数字 1 和 0。示例 1:输入: a = “11”, b = “1”输出: “100”示例 2:输入: a = “1010”, b = “1011”输出: “10101”2、关键字二进制加法,3、思路大数相加的思路,4、notes去看:大数相加练习题5、复杂度时间:O(N)空间:O(1)6、co原创 2021-08-19 21:00:15 · 621 阅读 · 0 评论 -
使用随机数7生成随机数10
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述已有方法 rand7 可生成 1 到 7 范围内的均匀随机整数,试写一个方法 rand10 生成 1 到 10 范围内的均匀随机整数。不要使用系统的 Math.random() 方法。来源:力扣(LeetCode)链接:著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字随机数生成随机数,3、思路题解思路4、notes int num = (rand7() - 1) * 7 + r原创 2021-09-05 13:03:25 · 782 阅读 · 0 评论 -
丑数显示打印出来
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2:输入:n = 1输出:1解释:1 通常被视为丑数来源:力扣(LeetCode)链接著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出原创 2021-09-02 20:18:46 · 100 阅读 · 0 评论 -
数值的整数次方01
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,xn)。不得使用库函数,同时不需要考虑大数问题。示例 1:输入:x = 2.00000, n = 10输出:1024.00000示例 2:输入:x = 2.10000, n = 3输出:9.26100示例 3:输入:x = 2.00000, n = -2输出:0.25000解释:2-2 = 1/22 = 1/4 = 0.25来源:力扣(Leet原创 2021-09-01 17:22:18 · 97 阅读 · 0 评论 -
切绳子啊啊啊
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]…k[m-1] 。请问 k[0]k[1]…*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例 2:输入: 10原创 2021-07-31 14:08:45 · 107 阅读 · 0 评论 -
航班预订统计
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述这里有 n 个航班,它们分别从 1 到 n 进行编号。有一份航班预订表 bookings ,表中第 i 条预订记录 bookings[i] = [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti (包含 firsti 和 lasti )的 每个航班 上预订了 seatsi 个座位。请你返回一个长度为 n 的数组 answer,其中 answer[i] 是航班 i 上预订的座位总数。示原创 2021-08-31 22:22:21 · 127 阅读 · 0 评论 -
埃氏筛-找素数
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述统计所有小于非负整数 n 的质数的数量。示例 1:输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-primes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字素数3、思路指数更新4、notes先初始化一个标记原创 2021-08-31 22:01:17 · 77 阅读 · 0 评论 -
大数相加的一个练习题,
1、描述大数相加3、思路使用一个变量power=0来初始化进位。从后往前累加。如果长度不齐,就添0,4|notes// c++默认从char—>int 是c - ‘0’ 实现字符c从字符变成 整数int// int —> char int num = 7 , auto elem = num + ‘0’ elem类型是char6、codeclass Solution {public:// c++默认从char--->int 是c - '0' 实现字符c从字符变原创 2021-08-14 11:52:05 · 157 阅读 · 0 评论 -
数组的最大”权值“
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给出一个数组,定义它的权值是各元素相加的值,给出一个数组,要求分出两部分,求这两部分权值乘积的最大值,输出切分此数组的下标如:输入:1 2 3输出:2来源:阿里笔试2、关键字自定义“权值”,乘积最大,返回:下标+13、思路思路1:键盘输入的时候直接统计结果sum,然后遍历一遍数组,把左边sum1,逐个增加nums[i],右边逐个减少nums[i],然后记录乘积最大的下标,思路2:和思路一,一样统计sum1,原创 2021-08-14 08:53:39 · 857 阅读 · 0 评论 -
有效三角形的个数
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给定一个包含非负整数的数组,你的任务是统计其中可以组成三角形三条边的三元组个数。示例 1:输入: [2,2,3,4]输出: 3解释:有效的组合是:2,3,4 (使用第一个 2)2,3,4 (使用第二个 2)2,2,3注意:数组长度不超过1000。数组里整数的范围为 [0, 1000]。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-tr原创 2021-08-04 09:37:35 · 160 阅读 · 0 评论 -
矩阵转置001
1、描述867给定一个矩阵 A, 返回 A 的转置矩阵。矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:[[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:[[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/transpose-matrix著作权归领扣网络所有。原创 2020-06-16 11:31:03 · 370 阅读 · 0 评论 -
黑板异或游戏
@[tcoc]1、描述黑板上写着一个非负整数数组 nums[i] 。Alice 和 Bob 轮流从黑板上擦掉一个数字,Alice 先手。如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话,当前玩家游戏失败。 (另外,如果只剩一个数字,按位异或运算得到它本身;如果无数字剩余,按位异或运算结果为 0。)换种说法就是,轮到某个玩家时,如果当前黑板上所有数字按位异或运算结果等于 0,这个玩家获胜。假设两个玩家每步都使用最优解,当且仅当 Alice 获胜时返回 true。示例:输入:原创 2021-05-22 10:04:42 · 178 阅读 · 0 评论 -
约瑟夫环
#1、面试题62. 0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求出这个圆圈里剩下的最后一个数字。例如,0、1、2、3、4这5个数字组成一个圆圈,从数字0开始每次删除第3个数字,则删除的前4个数字依次是2、0、4、1,因此最后剩下的数字是3。示例 1:输入: n = 5, m = 3输出: 3示例 2:输入: n = 1...原创 2020-03-30 10:55:35 · 124 阅读 · 0 评论 -
分卡牌
文章目录1、描述2、思路3、notes4、复杂度:5、code1、描述给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,3],[4,4]示例 2:输入:[1,1,1,2,2,2,3,3]输出:fals原创 2021-03-25 18:40:31 · 214 阅读 · 0 评论 -
分卡牌qqqq
#1、描述给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组: 每组都有 X 张牌。 组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。示例 1:输入:[1,2,3,4,4,3,2,1]输出:true解释:可行的分组是 [1,1],[2,2],[3,...原创 2020-03-27 16:16:41 · 251 阅读 · 0 评论 -
被4整除的判断,
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/power-of-four著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2、关键字被4整除3、思路和被2整除一样的思原创 2021-05-31 07:44:48 · 1883 阅读 · 0 评论 -
汉明总距离
文章目录1、描述2、关键字3、思路4、notes5.复杂度6、code1、描述两个整数的 汉明距离 指的是这两个数字的二进制数对应位不同的数量。计算一个数组中,任意两个数之间汉明距离的总和。示例:输入: 4, 14, 2输出: 6解释: 在二进制表示中,4表示为0100,14表示为1110,2表示为0010。(这样表示是为了体现后四位之间关系)所以答案为:HammingDistance(4, 14) + HammingDistance(4, 2) + HammingDistance(14,原创 2021-05-28 09:53:03 · 100 阅读 · 0 评论 -
找出所有子集的异或总和再求和
文章目录1、描述2、关键字3、思路4、notes5、复杂度6、code1、描述找出所有子集的异或总和再求和一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果;如果数组为 空 ,则异或总和为 0 。例如,数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 = 1 。给你一个数组 nums ,请你求出 nums 中每个 子集 的 异或总和 ,计算并返回这些值相加之 和 。注意:在本题中,元素 相同 的不同子集应 多次 计数。数组 a 是数组 b 的一个 子集 的前提条件原创 2021-08-19 21:49:36 · 628 阅读 · 0 评论 -
数组中只出现的1次,的一个数,两个数._位运算
文章目录1、描述2、思路3、note4、复杂度5、code1、描述面试56-1一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,...原创 2020-04-28 08:39:57 · 234 阅读 · 0 评论 -
异或操作求相等
1、描述给一个数组arr,让从中间选取3个下标,0<= i < j <=k <n。使得n1= arr[i]^…arr[j-1],和n2 =arr[j]^…arr[k]相等,求出能使相等的总个数。2、关键字数组,异或,相等。区间,i不必从零开始3、思路先把数组分开成两段。左边一段从右往左遍历寻找。右边一段从左往右寻找。3层循环。4、notesi,是一个范围,不是非得从零开始。暂存结果的n1,和n2,需要每次当前循环重置为0,所以要在外一层循环中声明。5、复杂度时间原创 2021-05-18 16:56:32 · 496 阅读 · 0 评论 -
寻找“众数”+“主要元素”
1、描述寻找一个数组中出现最多的数字,这个数字出现的次数大于n/22、关键字特殊“众数”,数组3、思路众数大于一半,直接位运算我使用的是一个pair进行一轮遍历进行,统计抵消,4、notes忘记了但是位运算怎么写的了,当使用i进行循环的时候,可以实现跳步5、复杂度时间O(N)空间:O(1)6、code摩尔投票:public: int majorityElement(vector<int>& nums) { int x = 0,vote原创 2021-05-24 17:18:30 · 94 阅读 · 0 评论 -
位运算实现加法
1、描述写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。2、关键字实现加法,不使用+ - * / ,3、思路位运算,二进制相加,原始位的值和异或操作的结果相同,进位的值和“与”操作相同。所以使用递归的方式4、notes根据二进制找规律5、复杂度时间:O(1)空间:O(1)6、codeclass Solution {public: int add(int a, int b) { if (b == 0)原创 2021-05-25 20:44:29 · 390 阅读 · 0 评论