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

1-n

示例 1: 输入: n = 3 输出: 6 示例 2: 输入: n = 9 输出: 45 限制: 1 <= n <= 10000 递归 由于题目限制了很多,其中比较常用for循环方法也被禁用,那么不用...0 : n + sumNums(n - 1); } 但是题目要求不允许使用条件判断语句,那么我们是否能使用别的办法来确定递归出口呢?答案就是逻辑运算符短路性质。...空间复杂度:Ο(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

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

统计0到n之间1个数(经典,详解)

问题描述 给定一个十进制整数N,求出从1N所有整数中出现”1个数。 例如:N=2时 1,2出现了1个 “1” 。 N=12时 1,2,3,4,5,6,7,8,9,10,11,12。...2位数情况: N=13,个位数出现1次数为2,分别为111,十位数出现1次数为4,分别为10,11,12,13,所以f(N) = 2+4。...N=23,个位数出现1次数为3,分别为1,11,21,十位数出现1次数为10,分别为10~19,f(N)=3+10。...由此我们发现,个位数出现1次数不仅个位数有关,十位数也有关,如果个位数大于等于1,则个位数出现1次数为十位数数字加1;如果个位数为0,个位数出现1次数等于十位数数字。...而十位数上出现1次数也不仅十位数相关,也个位数相关:如果十位数字等于1,则十位数上出现1次数为个位数数字加1,假如十位数大于1,则十位数上出现1次数为10。

99080

常见算法时间复杂度 Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…

虽然我不懂算法,但是我知道关于算法时间复杂度。比如:Ο(1)、Ο(log2n)、Ο(n)、Ο(nlog2n)、Ο(n2)、Ο(n3)…Ο(2n)、Ο(n!)等所代表意思!...所以,我们就先来看看 O(1) 是什么意思? ? O(1) O(1) 也就是最低时间复杂度。代表是一个常量值。也就是说耗时,耗空间与输入数据大小无关。无论输入数据增大多少倍,耗时是不变。...相关算法举例:哈希算法(不考虑冲突情况),无论在数据量多么大,都是 O(1)。 ? O(n) O(n) 理解起来也很简单,就是算法时间复杂度随着数据量增大几倍,耗时也增大几倍。...常见算法时间复杂度由小到大依次为:Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)。 ? 上图是常见算法时间复杂度举例。...关键是你要正视你别人差距。

7.5K21

2022-07-17:1、2、3...n-1nnn+1n+2... 在这个序列中,只有一个数字有重复(n)。 这个序列是无序,找到重复数字n。 这个序

2022-07-17:1、2、3...n-1nnn+1n+2...在这个序列中,只有一个数字有重复(n)。这个序列是无序,找到重复数字n。这个序列是有序,找到重复数字n。...第一问,两种方法,快慢指针找环问题异或法。第二问,二分法。代码用rust编写。...}// 符合题目要求、无序数组,找重复数// 时间复杂度O(N),额外空间复杂度O(1)// 用快慢指针fn find_duplicate(arr: &mut Vec) -> i32 {...一个结论 return slow;}// 符合题目要求、无序数组,找重复数// 时间复杂度O(N),额外空间复杂度O(1)// 用异或fn find_duplicate2(arr: &mut Vec...(0, n) + 1; let mut i = n; while i > 0 { let j = rand::thread_rng().gen_range(0, i + 1);

78310

浅谈n个球m个盒子之间乱伦关系

$f[n][m] = f[n - 1][m - 1] + m \times f[n - 1][m]$ 边界条件:$f[0][0] = 1$ 答案 = 第$n$个数单独占一个盒子 + 第$n$个数之前数共占一个盒子...,同时考虑不同位置贡献 注意最后要乘$m$,因为第$n$个数放置位置对答案是有影响 例如{1}{2 4}{3}与{1}{2}{3 4}是不同方案 题目中应用 可空 直接枚举用了多少个盒子 设$...$ 相当于是考虑$m$个盒子顺序 球同,盒异 不空 插板法经典例题 $n$个球之间形成$n - 1$个空位,把$m$个盒子塞到里面 方案为$C_{n - 1}^{m - 1}$ 可空 注意这里不能直接套用...球同,盒同 可空 这种情况下,不同方案之间与具体用了哪个球以及放到了哪个盒子里都没有必然联系 区分不同方案方法是:把每个盒子个数从小到大排序,比较最终情况是否相同 例如:$1  7  1$与...m$个相同盒子里,盒子可以为空方案数 边界条件为$f[0][k] = 1, f[1][k] = 1, f[k][1] = 1$ 递推方程$f[n][m] = \begin{cases} f[n

1.7K30

HIbernate1+N”问题

这个主要是hibernate考虑到了一级二级缓存效果, 如果缓存中有我们要查询数据 那么这时我们就不用到数据库中去查询数据,而是直接从缓存中读取我们需要数据。...这就大大 提高了我们程序运行效率。...但是一旦缓存中没有我们需要数据,那么这时hibernate就会向数据库发出请求,所以我们看到上面的 运行效果会出现“1+N效果;(说明缓存中并没有我们要查询 数据) 我们要避免这种问题,方法:...,”1+N方法,就会解决,而List是只从数据库中读取数据,不会 到缓存中读取数据,但是list会把从数据库中读取数据放入到缓存中,而Iterator则是先查询缓存 ,如果缓存中有我们需要数据,...如果缓存中没有我们需要数据,即:没有命中 这时再向数据库发出请求。所以会有”1+N运行效果。

52630

O(1)时间检测2幂次除以2统计1位数nn-1取且

统计1位数 这个也容易想到,如果是2幂次的话肯定是正,然后去统计1个数,需要移位取且操作,上面的方法差不多。因为除2本来就可以通过移位操作完成。...// write your code here } nn-1取且 这个是以前检测有多少个1时候用到一种方法,那个时候有一个结论:n&n-1可以减少一位1,如果用这种方法,那代码是相当简单:...n位有符号数表示范围: -2^n-- 2^(n-1)-1 原码表示:     左边是符号位,正数为0,负数为1。...:     正数反码原码相同,负数反码由原码除了符号位其余位取反(即0表1,1表0)     【+10】反码 = 00001010     【-10】反码 = 11110101     ...再如,将3点时针调慢一个小时,即调成2点,将时针向前调整11个小时效果是一样。因此用3-1(3+11)mod(12)结果一样。补码在机器码中运用主要是用加法元算代替减法运算。

57930

打印1到最大n位数

这道题是面试过可能会遇到手写代码题。如n为3时,那么需要打印1到999。需要注意是当输入n很大时,最大n位数是不能通过int或者long long int来表示,此时可以使用字符数组来存储。...思路一: 1n位最大数值采用字符数组存储。数值高位存储在字符数组低地址位。...* numchar = new char[n+1]; memset( numchar,'0',sizeof(char)*(n+1) ); numchar[n] =...思路二: 换思路,n位所有十进制数其实就是n个0-9数全排列过程,只是排在前面的0我们不打印出来。 全排列可以用递归去写,递归结束条件是我们已经设置了数字最后一位。...总结: 如果面试题是关于n整数并且没有限定n取值范围,或者是输入任意大小整数,那么这个题目很有可能是需要考虑大数问题。字符串是一个简单、有效表示大数方法。

35110

如何优雅解决n 1查询!!!

我们在写代码时候非常忌讳出现n+1次查询,这就意味循环有多少次,就会查询多少次数据库,这是很恐怖场景。...因为每次服务调用mysql查询时候,都是一件很耗费性能操作,下面我们举个例子,来说说n+1触发场景及解决方案。...n+1改为1+1模式 我们可以将n次查询条件添加到一个集合中,然后通过in语句一次性查询出我们需要数据,这样就可以避免n+1次查询出现,可以大大提高我们执行效率,代码如下所示: /** * 订单...后记 童鞋们要记住,每一种模式都存在一定缺陷,数据量不一样,模式执行效率天差地别。童鞋们有空的话可以思考如下问题: n+1模式修改为1+1模式需要注意哪些问题?...n+1中如果n数值非常大,要如何优化(因为直接查询组装成in,查询效率也会很差)?

1.4K10

MySQL获取分组后TOP 1TOP N记录

有时会碰到一些需求,查询分组后最大值,最小值所在整行记录或者分组后top n记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接方法可以查出来,可通过以下方法来查询...准备工作 测试表结构如下: root:test> show create table test1\G *************************** 1. row ***************...查询每门课程分数最高学生以及成绩 1、使用自连接【推荐】 root:test> select a.name,a.course,a.score from -> test1 a -> join...| 数学 | 99 | | 张三 | 英语 | 90 | +--------+--------+-------+ 3 rows in set (0.00 sec) TOP N...N>=1 查询每门课程前两名学生以及成绩 1、使用union all 如果结果集比较小,可以用程序查询单个分组结果后拼凑,也可以使用union all root:test> (select name,

2.5K41

PostgreSQL MySQL 之间性能差异

MySQLPostgres最新版本略微消除了两个数据库之间性能差异。 在MySQL中使用旧MyISAM 引擎可以非常快速地读取数据。不幸是,在最新版本MySQL中尚不可用。...好消息是,MySQL不断得到改进,以减少大量数据写入之间差异。 甲数据库基准是用于表征比较性能(时间,存储器,或质量)可再现试验框架数据库在这些系统上系统或算法。...这种实用框架定义了被测系统,工作量,指标实验。 在接下来4部分中,我们将概述MySQLPostgreSQL之间一些关键区别。...JSON查询在Postgres中更快 在本节中,我们将看到PostgreSQLMySQL之间基准测试差异。...- InnoDB多版本- MySQLMVCC 结论 在本文中,我们处理了PostgreSQLMySQL之间一些性能差异

4.9K20
领券