![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与数据结构
文章平均质量分 71
七月简语
这个作者很懒,什么都没留下…
展开
-
二叉树的迭代遍历
以前遍历二叉树都是用递归进行遍历,导致要用迭代遍历的时候总是要想很久,特在此对二叉树的迭代遍历进行记录。前序遍历/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * Tree原创 2021-06-10 11:08:55 · 215 阅读 · 0 评论 -
LeetCode 连续数组
题目给定一个二进制数组numsnumsnums,找到含有相同数量的0和1的最长连续子数组,并返回该子数组的长度。示例:输入:nums = [0,1,0]输出:2说明:[0,1](或[1,0])是具有相同数量0和1的最长连续子数组。方法:前缀和+哈希表由于“0和1数量相同”等价于“1的数量减去0的数量等于0”,可以将数组中的0视作-1,则原问题转换成“求最长的连续子数组,其元素和为0”。设数组numsnumsnums的长度为nnn,将数组numsnumsnums进行转换得到长度相等的新数组原创 2021-06-05 11:20:51 · 219 阅读 · 0 评论 -
连续的子数组和
题目给定一个整数数组nums和一个整数k,编写一个函数来判断该数组是否含有同时满足下述条件的连续子数组:子数组大小至少为2,且子数组元素总和为k的倍数。如果存在,返回true;否则,返回false。如果存在一个整数n,令整数n符合x=n∗kx=n*kx=n∗k,则称x是k的一个倍数。前缀和 + 哈希表 + 同余定理最直接的思路是遍历数组numsnumsnums中每个大小至少为2的子数组并计算每个子数组的元素和,判断是否存在一个子数组的元素和为kkk的倍数。当数组numsnumsnums的长原创 2021-06-02 11:22:21 · 265 阅读 · 0 评论 -
判断一个数是否为4的倍数
2的幂如果一个数nnn是4的倍数(幂),那么,nnn一定也会是2的幂。所以,我们可以先判断nnn是否是2的幂,在此基础上再判断nnn是否为4的幂。判断nnn是2的幂的方法见判断一个数是否为2的幂。常见的有两种:n&(n−1)==0 n\&(n-1) == 0n&(n−1)==0和n&(−n)==n n \& (-n) == nn&(−n)==n二进制如果nnn是4的倍数那么nnn的二进制表示有且只有一个1,并且这个1出现在从低位开始的第奇数个二进原创 2021-05-31 15:54:13 · 4555 阅读 · 0 评论