结构与算法

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