当前位置: 首页 > wzjs >正文

郑州网站开发公司哪家好免费用搭建网站

郑州网站开发公司哪家好,免费用搭建网站,广东高职一流专业建设专题网站,广州视频制作# 快速幂 求&#xff1a;23的10000次幂&#xff0c;那么就是求23的5000次幂&#xff0c;因为2350*235023^100;所以可以遍历log(n)次 int res1; int tmp23; for(int i1;i<logn;i) {tmp*tmp; }显然&#xff0c;我们无法通过logn计算次数&#xff1b; 比如是非偶数的怎么计算呢…

``# 快速幂
求:23的10000次幂,那么就是求23的5000次幂,因为2350*2350=23^100;所以可以遍历log(n)次

int res=1;
int tmp=23;
for(int i=1;i<=logn;++i)
{tmp*=tmp;
}

显然,我们无法通过logn计算次数;
比如是非偶数的怎么计算呢?
我们可以考虑一下:100二进制位=(1100100)=22+25+2^6=4+32+64=100
所以我们可以得到

int res=1;
int tmp=23;
int n=100
while(n>0)
{while(n&1)res*=tmp;tmp*=tmp;n>>1;
}

应用:找好数字

题目描述

一个数字字符串是好数字当它满足(下标从 0 开始偶数下标处的数字为偶数且奇数下标处的数字为 质数 (2,3,5 或 7)。
比方说,“2582” 是好数字,因为偶数下标处的数字(2 和 8)是偶数且奇数下标处的数字(5 和 2)为质数。但 “3245” 不是 好数字,因为3在偶数下标处但不是偶数。
给你一个整数n,请你返回长度为n且为好数字的数字字符串总数。由于答案可能会很大,请你将它对1e9+7 取余后返回
一个 数字字符串 是每一位都由 0 到 9 组成的字符串,且可能包含前导 0 。

示例 1:
输入:n = 1
输出:5
解释:长度为 1 的好数字包括 "0""2""4""6""8" 。
示例 2:
输入:n = 4
输出:400

理论分析

代码

long long fastPow(long long a,long long b,long long mod){int res=1;a=a%mod;while(b>0){if(b&1)res=(res*a)%mod;a=(a*a)%mod;b>>=1;}return res;}int countGoodNumbers(long long n) {const long long mod=1e9+7;long long evePosition=(n+1)/2;long long oddPosition=n/2;long long res=(fastPow(5,evePosition,mod)*fastPow(4,oddPosition,mod))%mod;return (int)res;}

二叉树的父节点

“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q)

分析

思路1

找父节点,那就是找前序遍历的节点
比如:找5的父节点:3;找4的父节点:3,5,2三个父节点
找公共父节点:就是二者前序遍历中的5,我们可以通过map<TreeNode,int>mp
然后逆序遍历map就可以得到最近的父节点

  1. 缺点:需要mp来维护,但是这个不是二叉搜索树,如果要查找6,一个查找8,我们需要记录全部的过程,并且是没有规律的,遍历的后面处理的很复杂,尤其是树的深度很深的时候

思路2

上面算是迭代的过程,递归+迭代,递归遍历,然后迭代找父节点
我们如何用迭代来结算呢?
转换思考方向:我们递归遍历,查看该节点是不是父节点就好了

  1. 必须输入的是root,节点p,节点q
  2. 是否是父节点:
    1. 情况1:root节点p或者root节点q,root为最近父节点
    2. 情况2:root->left==节点p,root->right=q,root为最近父节点
    3. 情况3:root的左右子树中存在p,q;这个就是递归开始的条件了
      1. 情况3.1:p,q全在左子树
      2. 情况3.2:p,q全在右子树
      3. 情况3.3:p,q分别在左右子树中
代码1
TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q)
{if(root==nullptr)return nullptr; //递归结束的标志,找到叶子节点了if(root==p||root==q)return root; //p,q就是跟节点了,所以可以直接找到TreeNode* left=tranverse(root->left, p, q);TreeNode* right=tranverse(root->right, p, q);//情况2+情况3.3,从递归角度来看,p,q是分别在左右子树还是分别为左右子节点是没有区别的if(left!=nullptr&&right!=nullptr){return root;}return left==nullptr?left:right;
}
优化代码1

我们可以看到,如果在左子树找到了p,q我们还是需要遍历右子树的?有没有什么方法是找到了就不需要遍历的,我们可以通过一个状态码state来记录

 bool state=false;TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(state){return nullptr;}if (root == nullptr) {return nullptr;}// 前序位置if (root== p || root == q) {// 如果遇到目标值,直接返回return root;}TreeNode* left = lowestCommonAncestor(root->left, p, q);TreeNode* right = lowestCommonAncestor(root->right, p, q);// 后序位置,已经知道左右子树是否存在目标值if (left != nullptr && right != nullptr) {// 当前节点是 LCA 节点state=true;return root;}return left != nullptr ? left : right;}
优化2

上面state虽然减少了进入递归,即通过提前返回nullptr来的方式减少进入左右子树,
我们可以通过遍历左子树,如果左子树返回不为空,直接不进入右子树即可

TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if (root == nullptr || root == p || root == q) {return root;}TreeNode* left = lowestCommonAncestor(root->left, p, q);if (left && left != p && left != q) {return left; // 如果 left 已经是 LCA,直接返回,不再递归右子树}TreeNode* right = lowestCommonAncestor(root->right, p, q);if (left && right) {return root;}return left ? left : right;
}

stor(root->right, p, q);

    if (left && right) {return root;}return left ? left : right;

}

第一种优化的缺点

文章转载自:

http://w00LhUiL.kxnxf.cn
http://PqlzdEPZ.kxnxf.cn
http://rdLUqXCC.kxnxf.cn
http://WZec3w8s.kxnxf.cn
http://VtN9NFq1.kxnxf.cn
http://vFNlHJs4.kxnxf.cn
http://Gf4ab4vR.kxnxf.cn
http://LjHLvjKM.kxnxf.cn
http://woGuEyC1.kxnxf.cn
http://BJDvCkzg.kxnxf.cn
http://FTi2prhW.kxnxf.cn
http://4wtLXvcM.kxnxf.cn
http://8kZBzfCT.kxnxf.cn
http://1wPnRv5U.kxnxf.cn
http://xh1GQzyY.kxnxf.cn
http://utdmnzBN.kxnxf.cn
http://tl9LIsZC.kxnxf.cn
http://1OVisVA8.kxnxf.cn
http://XJ74qSqB.kxnxf.cn
http://P6mNkcrX.kxnxf.cn
http://5FeBR3gi.kxnxf.cn
http://mC5tssN4.kxnxf.cn
http://FA00pAIV.kxnxf.cn
http://8U1OSl5M.kxnxf.cn
http://jKLqYMqm.kxnxf.cn
http://29rSUgwe.kxnxf.cn
http://GSqDPA6v.kxnxf.cn
http://2h0jJnBD.kxnxf.cn
http://xuhvQnw1.kxnxf.cn
http://fCM3jMZd.kxnxf.cn
http://www.dtcms.com/wzjs/735323.html

相关文章:

  • 静态网站分页做湲兔费网站视颍
  • dede怎么做网站seo网站推广如何做
  • 电脑网站建设在哪里网站制作价格权威乐云践新
  • 烟台网站公众号制作wordpress cdn代码
  • 南沙手机网站建设网站调研方法有哪些内容
  • 蛙蛙写作网站最新商城系统
  • 大连零基础网站建设教学公司wordpress404页面更爱
  • 河南新蔡有做网站建设的吗如何做电商直播
  • 河南网站建设优化推广网页毕业设计论文
  • 1网站建设公司做图标去什么网站找
  • 新站整站快速排名河南郑州网站制作公司
  • 开发网站的硬件成本如何做亚马逊跨境电商
  • 网站建设与管理课程心得体会越秀五屏网站建设
  • 工业设备网站源码域名备案后网站打不开
  • 广西工程建设质量管理协会网站丹阳建站推广管理
  • 静态网站如何建设wordpress pinterest
  • 网站建设经典范例wordpress怎么设置水印
  • 上海php网站开发公司国产安卓开发工具
  • 做网站被网警找做3D打印样品用什么外贸网站好
  • 网站外包公司有哪些青岛做网站公司排名
  • 网站建设怎么购买空间成都微信小程序分类信息开发
  • 科技网站设计欣赏装饰工程投标书
  • 镇江网站建设联系思创设计公司企业定位
  • 阿里 网站建设河北沧州市网络公司
  • 嘉兴网站推广公司个人建站赚钱
  • python做网站有什么弊端在网上做广告怎么做
  • 个人免费开店的网站免费咨询律师的电话
  • 自己做网站需要固定ip吗如何选择网站开发语言
  • 云网站建设017年青大学网站建设招标
  • 广东网站se0优化公司深圳餐饮公司网站制作