技术栈
结构与算法
橘颂TA
2 天前
算法
·
leetcode
·
动态规划
·
结构与算法
【剑斩OFFER】算法的暴力美学——数青蛙
我们用一个哈希表来统计 croak 每个字符出现的次数,我们重头开始遍历原数组,我们先聊一下除了遍历到字符 "c" 的情况:
橘颂TA
2 天前
算法
·
leetcode
·
职场和发展
·
结构与算法
【剑斩OFFER】算法的暴力美学——外观数列
根据题目来解题就行:其实就是上面图片中:上一个编码有3个3,所以下一个编码的前面就是33,1个1,所以下一个编码的中间就是11,后面依次类推。
橘颂TA
3 天前
算法
·
leetcode
·
职场和发展
·
结构与算法
【剑斩OFFER】算法的暴力美学——Z字行变换
我们可以从字符串的下标表示来寻找题目的规律:第一行:0 到 4 之间隔着 d = 2 * numrows - 2,相当于数学里面的等差数列的差值 d ,所以:当 i = 0 时,i、i + d、i + 2d、i + 3d 。。。。。i + kd 来表示第一行的取值。
橘颂TA
12 天前
算法
·
c/c++
·
结构与算法
【剑斩OFFER】算法的暴力美学——判定字符是否唯一
我们可以用位图的思想来解决这道题:找一个32位比特位的数字,这32个比特位用来表示字符是否存在,例如:000000.....0000 假设有个字符 a,如果位图的第 a - a 个位置,也就是第 0 个位置是否为 0 ,如果是0,就把这个位置改成1,表示 a 这个字符是存在的,假设再出现出现一个字 a ,我们也还是判断第 a - ’a' 这个位置是否为0,此时是不为0,所以我们返回 false ,因为字符重复了。
橘颂TA
13 天前
数据结构
·
算法
·
leetcode
·
结构与算法
【剑斩OFFER】算法的暴力美学——丢失的数字
我们可以使用异或的思想来解决这道题:a ^ a =0剩下的那个就是正确答案。
橘颂TA
14 天前
c++
·
算法
·
leetcode
·
结构与算法
【剑斩OFFER】算法的暴力美学——连续数组
我们可以把数组里面的0变成-1,这样当数组前缀和0时,表示这段区域的和0和1的数量相等。使用 hash<前缀和,数组下标>。
橘颂TA
17 天前
算法
·
c/c++
·
结构与算法
【剑斩OFFER】算法的暴力美学——矩阵区域和
我们一看题目就知道使用二维数组的前缀和来解决这道题目。所谓二维数组的前缀和就是某个二维数组某个区域的和:https://blog.csdn.net/2403_84958571/article/details/154848877?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
橘颂TA
18 天前
算法
·
leetcode
·
职场和发展
·
结构与算法
【剑斩OFFER】算法的暴力美学——除自身以外数组的乘积
我们如果暴力查找时复杂度是非常高的,所以这里我们弄两个数组,一个求的是前缀的积,另外一个求的是后缀的积。
橘颂TA
21 天前
算法
·
leetcode
·
职场和发展
·
结构与算法
【剑斩OFFER】算法的暴力美学——寻找数组的中心下标
这里使用两个数组:前缀和数组和后缀和数组,来解决这道题目;那么什么是前缀和和后缀和呢?前缀和就是上面图片里面的数组,这个数组里面的数字怎么求的呢?例如数组里面的8,其实就8前面的1加上原数组的7,所以我们得出图片里面的前缀和的公式,这个公式有个特殊情况:当 i = 0 时,left[ 0 - 1] 会越界,所以 i >= 1,那么当 i = 0,left[ 0 ] = 原数组下标为 0 的那个数字:1。
橘颂TA
22 天前
算法
·
c/c++
·
结构与算法
【剑斩OFFER】算法的暴力美学——二维前缀和
一般来说我们遍历数组来进行求和,但是这种时间复杂度太高了:假设我们查找q次区域内和,最差的情况下我们要遍历完整个数组,所以我们的时间复杂度为:O(q * n * n);
我是有底线的