首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

1-n

题目描述 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。...利用这一特性,我们可以将判断是否为递归出口看作 A && B 表达式中 A 部分,递归主体函数看作 B 部分。如果不是递归出口,则返回 true,并继续执行表达式 B 部分,否则递归结束。...空间复杂度:Ο(n),递归函数空间复杂度取决于递归调用栈深度,这里递归函数调用栈深度为 O(n),因此空间复杂度为 O(n)。...Java流API 其实这种数学计算,包含求和,大小等等操作,Java引入很多方便方法,此题使用了Java流API IntStream.range(1, n + 1).sum(),指定范围整数。...关于流API介绍可以参考: public int sumNums2(int n) { return IntStream.range(1, n + 1).sum(); } 文章标题:1-n

47510
您找到你想要的搜索结果了吗?
是的
没有找到

【题解】区间

题目描述 给定 n 个正整数组成数列 a1,a2,⋯ ,an m 个区间 图片 分别这 m 个区间区间。对于所有测试数据, 图片 输入格式 共 n+m+2 行。...第 i 行为第 i 组答案询问。 输入输出样例 输入 #1 4 4 3 2 1 2 1 4 2 3 输出 #1 10 5 说明/提示 样例解释:第 1 到第 4 个数加起来为 10。...第 2 个数到第 3 个数加起来为5。 对于 50% 数据:n,m≤1000; 对于100% 数据: 图片 题目分析 题目需要我们求出m个区间,现在已知每次询问区间边界lr。...若采用暴力方式,复杂度为O(nm) 。此时,由于范围问题会超时。 需要采用更快方式进行处理。可以采用前缀思想,先提前进行预处理。...){ int n,m,l,r; cin>>n; for(int i=1;i<=n;i++){//输入n个元素 cin>>a[i]; sum[i]=sum[i-1]+a[i];//维护前缀

43920

叶子数量高度

叶子数量:递归来 第一种写法: //计算叶子数量 int getLeafNum(BinaryNode* root) { if (root == NULL) return 0; 叶子数量...:这里不能用局部遍量,因为局部遍量生存周期只有在当前函数 static int num=0; //当左子树右子树都等于NULL时,为叶子 if (root->lchild == NULL...// int num=0; //当左子树右子树都等于NULL时,为叶子 if (root->lchild == NULL && root->rchild == NULL) { (*num...) { return 0; } //返回左子树高度:返回本次递归的当前函数中左子树高度 int lheight = getTreeHeight(root->lchild); //返回右子树高度...// int num=0; //当左子树右子树都等于NULL时,为叶子 if (root->lchild == NULL && root->rchild == NULL) { (*num

54910

JavaPython中整除余运算

执行如下Java语句: System.out.println("5 / 3 = " + (5 / 3)); System.out.println("5 / -3 = " + (5 / -3)); System.out.println...System.out.println("-5 / -3 = " + (-5 / -3)); 输出结果为: 5 / 3 = 1 5 / -3 = -1 -5 / 3 = -1 -5 / -3 = 1 可以看出,整除把结果小数部分截掉了...-5 % -3)); 输出结果为: 5 % 3 = 2 5 % -3 = 2 -5 % 3 = -2 -5 % -3 = -2 这个结果可以通过如下运算得到: a % b = a - (a / b) 结果总是与被除数保持一致符号...>>> 5 // 3 1 >>> 5 // -3 -2 >>> -5 // 3 -2 >>> -5 // -3 1 在这里,整除结果似乎是这样得到: a // b = math.floor(float...(a) / b); >>> 5 % 3 2 >>> 5 % -3 -1 >>> -5 % 3 1 >>> -5 % -3 -2 这也是通过如下运算得到: a % b = a - (a / b) 结果总是与除数保持一致符号

1.7K20

Python应用之100以内奇数

在数学中,我们需要用到很多求和办法,比如说1至100,还有100以内所有偶数和和所有奇数,如果我们慢慢地计算是不是很浪费时间,还容易出错。...1.解题思路 对100以内奇数求和,有四种常见解题方法: 用range函数遍历100以内奇数,然后用sum函数求和 for 循环嵌套if语句,将100以内奇数相加求和 while...(1, 100, 2)表示取值为1-100(不包括100)整数,步长为2,输出值为1,3,5……99 更多关于range函数用法查看Python应用之九九乘法表_9月月更_向阳逐梦_InfoQ写作社区...,是奇数就相加(if i % 2 == 0,continue含义是当数字为偶数时退出本次循环) 第8行: 用print函数打印其 代码运行效果: 方法三:while循坏 count = 0 number...(number < 100)及执行语句(count += number;number += 2)第8行: 用print函数打印其 代码运行效果: 方法四:递归求和 def sum(x): if

2.2K20

批量汇总Excel数据,只要表中几列,怎么办?

小勤:我要汇总一堆表里,每个表情况不太一样,但有些列是每个表都有的,我就是要汇总这些列,怎么办啊? 大海:我在《批量汇总多Excel文件数据系列文章12篇,助你变成老司机,轻松躲坑666!》...里面讲过,几乎所有特殊情况处理,都可以在解析出表数据之后,展开合并数据之前按需要进行处理。 小勤:也就是说。添加自定义列对解析出来表进行统一处理? 大海:对啊。...比如回到这个例子,通过添加自定义列,对原来表里数据选择需要列,得到新表: 然后再展开合并数据即可: 小勤:理解了。...大海:对。就是这么简单。 小勤:那如果这个特殊处理过程比较复杂怎么办? 大海:那你可以先用一个表做为例子处理好,再把这些特殊处理步骤改成一个自定义函数去调用啊。...小勤:也对,这样就能避免去写一堆看不见摸不着代码了。

53610

二叉树深度宽度

1 二叉树深度 题目: 输入一个二叉树根节点,该树深度。从根节点到叶子节点依次经过节点(含根、叶节点)形成树一条路径,最长路径长度包含节点数为为树深度,即二叉树节点层数。...* m_pRight; }; 二叉树示例: 以图深度为四二叉树为例,其先先根遍历序列为:{1,2,4,5,7,3,6},中根遍历序列为:{4,2,7,5,1,3,6},根据先根序列中根序列即可构造唯一二叉树...nLeft+1:nRight+1; } 2 二叉树宽度 题目: 给定一颗二叉树,二叉树宽度。 宽度定义: 二叉树宽度定义为具有最多结点数层中包含结点数。...具体实现: //二叉树宽度 int treeWidth(BinaryTreeNode *pRoot){ if (pRoot == NULL) return 0;...[2]二叉树深度宽度

2.3K20

批量汇总Excel数据 | 只要表中几列,怎么办?

小勤:我要汇总一堆表里,每个表情况不太一样,但有些列是每个表都有的,我就是要汇总这些列,怎么办啊?...大海:其实,几乎所有特殊情况处理,都可以在解析出表数据之后,展开合并数据之前按需要进行处理。 小勤:也就是说。添加自定义列对解析出来表进行统一处理? 大海:对啊。...比如回到这个例子,通过添加自定义列,对原来表里数据选择需要列,得到新表: 然后再展开合并数据即可: 小勤:理解了。...大海:对。就是这么简单。 小勤:那如果这个特殊处理过程比较复杂怎么办? 大海:那你可以先用一个表做为例子处理好,再把这些特殊处理步骤改成一个自定义函数去调用啊。...小勤:也对,这样就能避免去写一堆看不见摸不着代码了。

1.1K30
领券