LINKING START !

每一个平凡的日常都是连续的奇迹

约瑟夫环问题

约瑟夫环问题又称丢手绢问题WIKI解释下标 0 至 n-1 形成一个环每次翻过m个数,删除后,从后面一个数继续开始翻过m个数删除,问最后剩下的数的下标目标 找到初始轮的幸存者下标最后一轮设为n轮 幸存者数目 1 幸存者下标为0sn - 1轮 幸存者数目 2 去除下标为 m%nx sn -

剑指-65 不用加减乘除做加法

思路加法器原理//进位 本位1 + 0 = 01 进位 0 本位 1 1 + 1 = 10 进位 1 本位 0 0 + 0 = 00 进位 0 本位 0 0 + 1 = 01 进位 0 本位 1 只有 1 1 的情况会产生进位,即 & 操作可以获取进位只有 1 0 的情况会产生本位为1 ,其

剑指-33 二叉搜索树的后序遍历序列

思路后序遍历|左子树|右子树|根节点|二叉搜索树的定义是左子树 < 根节点 < 右子树 (或者左子树 > 根节点 > 右子树)因此可以递归判断是否符合二叉搜索树定义数组边界为left right,根元素为root = array[right]从left进行遍历,一直到arra

剑指-16 数值的整数次方

这里了解一下快速幂的概念:幂计算的时候可以通过二分每次计算指数为一半的情况,例如// 偶数情况 x^n = x^(n/2) * x^(n/2)2^64 = 2^32 * 2^ 322^32 = 2^16 * 2^162^16 = 2^8 * 2^82^8 = 2^4 * 2^42^4 = 2^2 *

剑指-07 重构二叉树

思路先序遍历:根左右 中序遍历:左根右 后序遍历:左右根根据前序和中序构建树并返回根节点。前序的数组preOrder特点是元素遵循 |根元素|左子树|右子树|;中序的数组inOrder特点为元素遵循 |左子树|根元素|右子树|,因此可以递归以下步骤来构建子树范围 left > right 时返

大顶堆和小顶堆

目前接触的一些思路:滑动窗口、动态规划、贪心、斐波那契、二分法、递归、前/中/后序/层序(辅助队列)遍历、DFS(深度优先遍历)、BFS(广度优先遍历)昨天在剑指-41 数据流中的中位数中看到了两种思路解题大顶堆和小顶堆找出中位数通过有序集合和两个指针来指向中位数所在地址(因为元素数目存在奇数和偶数

剑指-45 把数字排成最小的数字

思路很朴素的想法,最小的数字一定首位最小,所以会想到进行排序,但是跟一般的数字排序有些差别,这里的排序条件是根据字符串拼接后的数值比较得出的,如果pre1 + pre2 的字符串 > pre2 + pre1 ,说明pre1 和 pre2需要进行交换。这个递推关系是有两个条件所有数的可能中,每个

剑指-61 扑克牌中的顺子

思路大小王可以当任意数字使用顺子中的牌不能有重复数组中的最大值和最小值差值不能 > 5(一共就五张牌)只要满足以上3个条件即可构成顺子这里有个小疑问,不知道打牌规则里的 13 ,1,2,3,4 能不能构成顺子?🤔️class Solution { public boolean isSt

剑指-34 二叉搜索树中和为某一值的路径

思路二叉搜索树本身包含了元素的排序,左子树的元素 <= 根节点 <= 右子树因为是从根结点到叶子结点的路径之和与指定值k进行对比遍历二叉树,当遍历到叶子结点的时候,判断从根路径到叶子结点的路径和是否和k相等,如果相等则添加该路径路径使用动态数组来存放,每当回退节点的时候去掉最后一个元素值

LINKING START !

切换主题 | SCHEME TOOL