随笔分类 - 数学
摘要:问题描述 给你一个下标从 0 开始的正整数数组 nums 和一个正整数 k 。 如果满足下述条件,则数对 (num1, num2) 是 优质数对 : num1 和 num2 都 在数组 nums 中存在。 num1 OR num2 和 num1 AND num2 的二进制表示中值为 1 的位数之和大
阅读全文
摘要:问题描述 给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,长度为 n 。 数组 nums1 和 nums2 的 差值平方和 定义为所有满足 0 <= i < n 的 (nums1[i] - nums2[i])2 之和。 同时给你两个正整数 k1 和 k2 。你可以将 nums1 中
阅读全文
摘要:2021-07-11 22:49:52 问题描述: Alice 和 Bob 玩一个游戏,两人轮流行动,Alice 先手 。 给你一个 偶数长度 的字符串 num ,每一个字符为数字字符或者 '?' 。每一次操作中,如果 num 中至少有一个 '?' ,那么玩家可以执行以下操作: 选择一个下标 i 满
阅读全文
摘要:2020-05-31 17:21:08 问题描述: 桌面上有 2n 个颜色不完全相同的球,球上的颜色共有 k 种。给你一个大小为 k 的整数数组 balls ,其中 balls[i] 是颜色为 i 的球的数量。 所有的球都已经 随机打乱顺序 ,前 n 个球放入第一个盒子,后 n 个球放入另一个盒子(
阅读全文
摘要:2020-05-11 10:50:50 1363. 形成三的最大倍数 问题描述: 给你一个整数数组 digits,你可以通过按任意顺序连接其中某些数字来形成 3 的倍数,请你返回所能得到的最大的 3 的倍数。 由于答案可能不在整数数据类型范围内,请以字符串形式返回答案。 如果无法得到答案,请返回一个
阅读全文
摘要:2020-04-06 17:54:20 问题描述: 计算an % b,其中a,b和n都是32位的非负整数。 样例 例如 231 % 3 = 2 例如 1001000 % 1000 = 0 挑战 O(logn) 问题求解: public int fastPower(int a, int b, int
阅读全文
摘要:2020-02-22 23:18:45 问题描述: 求解 (num1 * num2) % mod 的值,注意num1 * num2会溢出。 问题求解: 最简单的想法就是遍历一遍,但是会超时! int mul(int num1, int num2, int mod) { int res = 0; fo
阅读全文
摘要:2020-02-20 14:52:41 问题描述: 问题求解: 最开始的想法是将两个数字先转化成自然数在求和,最后转化回去,但是实际上这种方案是不可取的,主要的问题就是会爆掉。 那么就得按位进行运算了。 进行位运算的时候最大的难点在于进位怎么获得。 显然,当sum = 0 / 1的时候,carry
阅读全文
摘要:2020-02-11 12:01:21 问题描述: 问题求解: 本题的难度个人感觉还是蛮大的,主要是不容易想到O(n)的解。 对于 ...a, [b, ... , c], d, ...,如果我们将其中的[b, ... , c]进行翻转。 如果两线段有重复,必减小原先的值。 如果两线段无重复,必增加原
阅读全文
摘要:2020-02-10 13:24:26 问题描述: 问题求解: 第一次看到这个题目的时候想到的是之前做过的一条概率题,就是那个国际象棋,那条题目的做法是使用dp去对所有留在棋盘的种类进行计数,然后除以总数。所以,我一开始的做法也是这样做的。 但是实际是不对的,问题就是最后得到的解的概率是不等的,所以
阅读全文
摘要:2020-01-30 09:22:39 一、定义 曼哈顿距离:以二维举例,对于二维的两点p1(x1, y1),p2(x2, y2)它们的曼哈顿距离如下 dis = |x1 - x2| + |y1 - y2| 切比雪夫距离:以二维举例,对于二维的两点p1(x1, y1),p2(x2, y2)它们的切比
阅读全文
摘要:2020-01-03 12:01:46 问题描述: 问题求解: 确实可以当作数学题去做,但是要分类讨论什么的还是有点麻烦的。 这个时候万能的dfs上场了,直接暴力检索,真的太强了。
阅读全文
摘要:2019-12-02 21:15:31 进制转换是计算机科学里的一个基础算法,通常可以使用如下的模版来进行计算。 下面我们来讨论一些关于进制的题目。 1271. Hexspeak 问题描述: 问题求解: public String toHexspeak(String num) { StringBuf
阅读全文
摘要:2019-10-14 22:21:29 问题描述: 问题求解: 暴力求解必然会超时,那么就需要考虑数学的方法来降低时间复杂度了。
阅读全文
摘要:2019-10-14 17:00:10 问题描述: 问题求解: 如果暴力求解,时间复杂度是exponational的,因为这里是子序列而不是子数组。显然,直接枚举子序列是不太现实的了,那么可以怎么做呢? 切入点有两点: 1)数组的顺序对最后的结果是没有影响的,那么排序后的数组和原来的数组的结果是同样
阅读全文
摘要:2019-04-06 16:09:56 问题描述: 问题求解: 本题还是挺有难度的,主要是要考虑好如何去进行构造。 首先考虑到2 * A[i] = A[j] + A[k],那么j,k就必须是同奇同偶,否则它们的和必为奇数,显然等式不成立。 那么如果我们将N的数组分成两个部分,一部分全奇数,一部分全偶
阅读全文
摘要:2018-12-09 16:40:30 一、使用Rand7()来生成Rand10() 问题描述: 问题求解: 这个问题字节跳动算法岗面试有问到类似的,有rand6,求rand8,我想了好久,最后给了一个特殊解法,就进行三次,每次取前三个数和后三个数的概率相等为1 / 2,那么最后需要得到的概率是1
阅读全文
摘要:2018-07-28 16:52:20 问题描述: 问题求解: 使用bucket数组来记录每个数最后出现的位置,然后从左向右遍历一遍即可。
阅读全文
摘要:2018-07-28 15:30:21 一、判断是否为丑数 问题描述: 问题求解: 所谓丑数,首先得是正数,然后其质数因子只包含了2,3,4,因此我们只需要对当前的数分别除2,3,4直到不能除为止。 二、第n个丑数 问题描述: 问题求解: 由上面检测丑数的解法我们可以知道,每次丑数的生成都是使用2,
阅读全文
摘要:2018-07-14 09:57:59 问题描述: 问题求解: 本题本质上是个挺模板的题目。本质是一个求最后每个落点的数目,用总的数目来除有所可能生成的可能性。这种计数的问题可以使用动态规划来进行解决。 在本题中有两个注意点: 1)可以使用两个数组滚动使用来实现重复利用,这里我的实现使用了一个tri
阅读全文

浙公网安备 33010602011771号