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

算法创作|求任意N个整数最大值和最小

问题描述 如何求得任意N个整数最大值与最小值 解决方案 解决这个问题有三种常见思路,第一种思路比较简单粗暴,就是对用户输入每个整数两两之间进行比较,直到找到最大整数最小整数为止。...第二种思路是将用户输入整数放入一个空列表,然后利用Python内置max()函数和min()函数分别得到最大值和最小值。...第三种思路与第二种思路类似,也是将用户输入整数放入一个空列表,然后对列表进行排序,列表下标为0数即为最小值,列表下标为N-1数即为最大值。...其基本语法结构如下所示: try: 可能产生异常代码块 except (Error1 as e) : 处理异常代码块1 except (Error2 as e):...d个整数最小整数是%d'%(N,List[0])) print('输入%d个整数最大整数是%d'%(N,List[N-1])) 异常处理如图所示: image.png 加入处理异常语句块后我们代码更加健壮了

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

    剑指Offer学习笔记(C#篇)-- 整数1出现次数(从1到n整数1出现次数)

    题目描述 求出1~13整数1出现次数,并算出100~1300整数1出现次数?为此他特别数了一下1~13包含1数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。...ACMer希望你们帮帮他,并把问题更加普遍化,可以很快求出任意非负整数区间中1出现次数(从1 到 n 1出现次数)。 一 ....复杂解法(时间复杂度O(nlogn)) 原谅我只会最垃圾办法,难受啊,马飞!!这种方法思路就是一次次除10取余数,余数是1就+1,效率低一笔。。...while(b>0) { //有余数是1情况,就++,然后从最大搞到个位; if(b%10 == 1)...{ x++; } //这里用了整数求除法没有小数点bug;即int 12/int 10 = 1

    56210

    C语言计算整数二进制位1个数

    本文是关于C语言中计算整数二进制位1个数三个方法。 一、关于一个整数二进制表示方法 整数包括:正整数、负整数、零。...在二进制表示,正整数和零原码,反码,补码是一致;负整数原码,反码,补码表示方法各不一样。...二、计算二进制1方法 1.取余法 注意:本方法只能争对非负整数 将一个非负整数进行转变为计算机存储二进制,本质上就是对该非负整数,不断地对2整除和取余....2.移位法 在C语言中,右移运算符(按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位空位补符号位,即正数补零,负数补1)可以帮助我们完成计算二进制1个数。...方法:先将一个整数进行与1按位与(&),判断结果为1还是0,如果是1则该二进制1个数加1,再右移1位;再将其进行按位与1,判断结果为1还是0,右移1位……直到该整数等于0或者已经循环判断32次。

    54840

    《剑指offer》– 数组逆序对、最小K个数、从1到n整数1出现次数、正则表达式匹配、数值整数次方

    如果第一个子数组数字大于第二个数组数字,则构成逆序对,并且逆序对数目等于第二个子数组剩余数字个数,如下图(a)和(c)所示。...K个数: 1、题目: 输入n个整数,找出其中最小K个数。...: 1、题目: 求出1~13整数1出现次数,并算出100~1300整数1出现次数?...ACMer希望你们帮帮他,并把问题更加普遍化,可以很快求出任意非负整数区间中1出现次数(从1 到 n 1出现次数)。...② 如果百位上数字为1,百位上可能出现1次数不仅受更高位影响还受低位影响。

    88520

    C语言】求一个整数二进制序列1个数三种方法

    方法一:逐位%2法 该方法初步测试代码如下: int NumberOf1(int n) { int count = 0; while (n) { if (n % 2 == 1)...因此在计算机系统,数值一律用补码来表示和存储。...6  可以看到,正数和0测试都没有问题,但是负数却显示为0,我们来看看问题出在哪里了: 强制转换后函数代码如下: int NumberOf1(unsigned int n) { int count...count; } 测试运行:  强制转换可以实现原理是:   方法二:逐位&1法 该方法初步测试函数代码如下: int NumberOf1(int n) { int i = 0; int count...方法三:n&(n-1)法 该方法初步测试代码如下: int NumberOf1(int n) { int count = 0; while (n) { n=n& (n - 1); count

    8810

    C++版 - 剑指offer 面试题32:从1到n整数1出现次数(leecode233. Number of Digit One) 题解

    剑指offer 面试题32:从1到n整数1出现次数(Leecode233....tpId=13&tqId=11184 题目: 输入一个整数n,求从1到n这n个整数十进制表示1出现次数。 例如输入12,从1到12这些整数包含1数字有1,10,11,12。...分析: 可以用统计学方法来计算,假设从个位开始,每次假设某一位数字是1,然后统计剩下位数数字满足条件可能情况数。其时间复杂度为O(log n)....将输入整数n分割成3部分:当前位之前部分front, 当前位curDigit和当前位之后部分back....(其实不用判断首位是不是1可能性,因为首位是1时候,会得到(1+8)/10*mod,9/10 是0)。

    60620

    原创|如果懂了HashMap这两点,面试就没问题了

    如何找到比设置初始容量值大最小 2 幂次方整数? HashMap 对 key 做 hash 处理时,做了什么特殊操作?为什么这么做? 先自己思考下,再往下阅读效果更佳哦!...cap 本身,如果输入 cap 是奇数,返回就是比 cap 大最小 2 整数次幂 为什么容量要是 2 整数次幂?...1,这样就能保证 (n-1) & hash 后相应位数既可能是 0 又可能1,这取决于 hash 值,这样能保证散列均匀,同时与运算效率高 如果 n 不是 2 整数次幂,会造成更多 hash...1后面都置为 1 最后会对 n 和最大容量做比较,如果 >= 2^30,就取最大容量,如果 < 2^30 ,就对 n 进行 +1 操作,因为后面位数都为1,所以 +1 就相当于找比这个数大最小 2整数次幂...cap为18 我们输入是 18,输出是 32,正好是比 18 大最小 2 整数次幂 如果 cap 本身就为 2整数次幂,输出结果为什么? ?

    41450

    漫画:什么是计数排序?

    第二个整数是3,那么数组下标为3元素加1: ? 继续遍历数列并修改数组...... 最终,数列遍历完毕时,数组状态如下: ? 数组每一个下标位置值,代表了数列对应整数出现次数。...很简单,我们不再以(输入数列最大值+1)作为统计数组长度,而是以(数列最大值和最小差+1)作为统计数组长度。 同时,数列最小值作为一个偏移量,用于统计数组对号入座。...以刚才数列为例,统计数组长度为 99-90+1 = 10 ,偏移量等于数列最小值 90 。 对于第一个整数95,对应统计数组下标是 95-90 = 5,如图所示: ? ? ? 什么意思呢?...初次看到小伙伴可能会觉得莫名其妙。 这样相加目的,是让统计数组存储元素值,等于相应整数最终排序位置。比如下标是9元素值为5,代表原始数列整数9,最终排序是在第5位。...1.当数列最大最小值差距过大时,并不适用计数排序。 比如给定20个随机整数,范围在0到1亿之间,这时候如果使用计数排序,需要创建长度1亿数组。不但严重浪费空间,而且时间复杂度也随之升高。

    65130

    漫画:什么是计数排序?

    最终,数列遍历完毕时,数组状态如下: 数组每一个下标位置值,代表了数列对应整数出现次数。 有了这个“统计结果”,排序就很简单了。...很简单,我们不再以(输入数列最大值+1)作为统计数组长度,而是以(数列最大值和最小差+1)作为统计数组长度。 同时,数列最小值作为一个偏移量,用于统计数组对号入座。...以刚才数列为例,统计数组长度为 99-90+1 = 10 ,偏移量等于数列最小值 90 。 对于第一个整数95,对应统计数组下标是 95-90 = 5,如图所示: 什么意思呢?...初次看到小伙伴可能会觉得莫名其妙。 这样相加目的,是让统计数组存储元素值,等于相应整数最终排序位置。比如下标是9元素值为5,代表原始数列整数9,最终排序是在第5位。...当数列最大最小值差距过大时,并不适用计数排序。

    27710

    轻松拿捏C语言——数据类型和变量

    不同系统,返回值类型有可能是 unsigned int ,也有可能是 unsigned long ,甚至是 unsigned long long , 对应 printf() 占位符分别是 %u...为了代码可移植性,需要知道某种整数类型极限值时,应该尽量使用这些常量。 • SCHAR_MIN , SCHAR_MAX :signed char 最小值和最大值。...• SHRT_MIN , SHRT_MAX :short 最小值和最大值。 • INT_MIN , INT_MAX :int 最小值和最大值。...• LONG_MIN , LONG_MAX :long 最小值和最大值。 • LLONG_MIN , LLONG_MAX :long long 最小值和最大值。...后置-- 同理后置--类似于后置++,只是把加1换成了1 计算口诀:先使用,后-1 int a = 10; int b = a--;//--操作数是a,是放在a后⾯,就是后置-- printf(

    11410

    蒙哥马利算法

    基本概念 image.png 正整数 最大长度是 image.png ? 但是这并不是一个好解决方案,因为通常来说,我们不会直接做w位乘w位操作,这个后面会用蒙哥马利乘法来代替解决。...至此,你可能还不明白上面说这一堆演变原因,其实很简单,原来是一个运算,这个运算模操作,正常情况下是要通过除法实现,而除法是一个特别复杂运算,要涉及到很多乘法,所以在大数运算时,我们要尽量避免除法出现...蒙哥马利表示法 对于x,,x蒙哥马利表示法表示为 蒙哥马利约 蒙哥马利约定义如下 给定一整数t,蒙哥马利约计算结果是 蒙哥马利约算法可表示为 ?...D=D*C % N E=E-1 RETURN D 继续分析会发现,要知道E 何时能整除 2,并不需要反复进行一或除二操作,只需验证E 二进制各位是0 还是1 就可以了,从左至右或从右至左验证都可以...以上就是蒙哥马利算法全部,通过蒙哥马利算法运算,我们将大数运算模运算变成了移位操作,极大地提高了大数模乘效率。

    1.8K30

    什么是计数排序?

    第二个整数是3,那么数组下标为3元素加1: ? 继续遍历数列并修改数组...... 最终,数列遍历完毕时,数组状态如下: ? 数组每一个下标位置值,代表了数列对应整数出现次数。...很简单,我们不再以(输入数列最大值+1)作为统计数组长度,而是以(数列最大值和最小差+1)作为统计数组长度。 同时,数列最小值作为一个偏移量,用于统计数组对号入座。...初次看到小伙伴可能会觉得莫名其妙。 因为原来统计数组(未变形)里面存储是各个元素个数,那么向后叠加目的就是为了计算元素排序后最终位置(准确来说是最大最终位置)。...变形后统计数组(countArray)值就代表着原数列元素排序后最大最终位置(在重复元素情况下还会有其他相同元素在此位置之前)。比如下标是5值为4,说明 95 排序后位置最大就是第四。...1.当数列最大最小值差距过大时,并不适用计数排序。 比如给定20个随机整数,范围在0到1亿之间,这时候如果使用计数排序,需要创建长度1亿数组。不但严重浪费空间,而且时间复杂度也随之升高。

    53810

    软件测试测试开发|测试用例设计方法——边界值

    通常,这些边缘条件包括最小值、最大值以及接近最小值和最大值。边界值测试有助于发现在输入边缘情况下系统可能出现错误和异常行为。为什么使用边界值测试?...这可能涉及到数值、日期、字符串长度等方面。注:关于边界点,可以分为上点、内点和离点。如图:识别边界值确定输入范围后,识别边界值。这包括最小值、最大值以及靠近这些边缘值。...例如,如果一个输入要求是1到100整数,那么边界值就是1、100,以及靠近这两个边缘值,如2和99。创建测试用例为每个边界值创建一个测试用例。...确保测试用例包括所有可能情况,例如等于最小值、最大值、最小一、最大值加一等。执行测试用例执行设计测试用例,并观察系统行为。记录任何错误或异常。示例假设有一个输入范围为1到100整数程序。...边界值测试用例可能包括:输入值为1情况。输入值为100情况。输入值为0情况。输入值为101情况。输入值为2情况。输入值为99情况。

    47700

    《深入理解计算机系统》阅读笔记--信息表示和处理(下)

    (可能之前看时候,一眼看去都是公式,自己就不想看) 既然是补码加班,先回顾一下补码最大值和最小值 对于一个w为补码数来说,能表示最小值为:-2w-1次方, 表示最大值为:2w-1次方 ...其实总结一下就是:找到最右边1,然后这个1左边所有位进行取反 无符号乘法 无符号最大表示是2w次方1,那么对于x >=0 y <= 2w次方1,x和y乘积取值范围就是0到 (2...w次方1平方, 这样可能就会需要2w位来表示,C语言中无符号乘法被定义为产生w为值,就是2w位整数乘积低w位表示值 来看看原理为: ?...1,所以结果会向零舍入 关于整数运算小结 计算机执行整数运算实际上是一种模运算形式,表示数字有限字长限制了可能取值范围,结果可能溢出。...在这个过程,既可能会溢出,也可能需要舍入来满足 frac 精度。

    1.3K30

    计数排序 全网最详细讲解

    假设有这样子一个题:数组里有20个随机数,取值范围为从0到10,要求用最快速度把这20个整数从小到大进行排序。 你可能第一时间想到是快速排序,因为快排时间复杂度是O(nlogn)。...该数列最大值是99,但最小值是90,如果我们只以数列最大值来决定统计数组长度的话,就要创建长度为100数组,那么就会浪费前面90个空间。...为了解决这个问题,我们不再以(输入数列最大值+1)作为统计数组长度,而是以(数列最大值和最小差+1)作为统计数组长度。同时,数列最小值作为一个偏移量,用于统计数组对号入座。...改进版本计数排序代码如下: 如果原始数列规模是N,最大最小整数差值是M,由于代码1、2、4步都涉及到遍历原始数列,运算量都是N,第3步遍历统计数列,运算量是M,所以总体运算量是3N+M,去掉系数...虽然计数排序看上去很强大,但是它存在两大局限性: 1.当数列最大最小值差距过大时,并不适用于计数排序 比如给定20个随机整数,范围在0到1亿之间,此时如果使用计数排序的话,就需要创建长度为1亿数组

    70210

    C】结构体+自定义类型知识点大全(基础,进阶,简洁,全面)

    结构体第一个成员直接对齐到相对于结构体变量起始位置为0偏移处 从第二个成员开始,要对齐到某个【对齐数】整数偏移处 结构体总大小,必须是最大对齐数整数倍 例: 二:为什么存在结构体内存对齐...,不确定 位段中最大数目不确定(16位机器最大16,32位机器最大32;如写成27,在16位机器中会出问题) 位段成员在内存从左向右分配,还是从右向左分配标准尚不确定 当一个结构包含两个位段,...,默认依次向下1 这些常量可以赋值 可以出现部分不赋值,部分赋值,赋值过后剩余变量遵循默认依次向下1 例子:一周星期一到星期日是有限7天,可以一一列举 enum Day 星期 { Mon...}; 枚举所有可能取值 2.枚举相较于#define优点 我们可以用#define定义常量,为什么非要使用枚举?...,就要对齐到最大对齐数整数倍 例1: 分析: char arr[5]大小是1,默认对齐数是8,取1为对齐数 int i大小是4,默认对齐数是8,取4为对齐数 两者最大对齐数为4 最大成员大小是

    8810

    C语言笔记】整数溢出问题

    计算机语言中整数类型都有一个取值范围,两个整数进行运算时,若其结果大于最大值(上溢)或者小于最小值(下溢)就是溢出。...假如最大值为 a ,在最大值和最小值之间如果发生以下计算: a+1=0或0-1=a 此时就会发生溢出,其中a+1=0会发生上溢,0-1=a会发生下溢。...在32bit环境,short(占两个字节)范围为: -32768~32767 unsigned short范围为: 0~65535 所以short类型i=32767加1、加2时会产生上溢。...unsigned short类型j=65535加1、加2时会产生上溢。unsigned short类型k=012时会产生下溢。...(ps:可以使用程序来查看整数数据类型范围,具体可移步至【C语言笔记】如何查看数据类型范围?进行查看) 以上就是关于整数溢出笔记分享,如有错误欢迎指出!

    4.5K10
    领券