-
2021-01-30 04:20:39
【判断题】不可以在同一台计算机上安装多个Python版本。
【单选题】关于Python程序格式框架的描述,以下选项中错误的是( )。
【判断题】5 是因数, 8 是倍数. ( )
【简答题】1.病毒形态和结构?
【判断题】一个自然数越大,它的因数个数就越多. ( )
【判断题】Python是一种跨平台、开源、免费的高级动态编程语言。
【听力题】
【判断题】36 的全部因数是 2 、 3 、 4 、 6 、 9 、 12 和 18 ,共有 7 个
【单选题】2.讲究礼仪的原因,用一句话概括为
【填空题】《陌上桑》叙述女主人公( )以夸夫的方式巧妙拒绝好色的使君。
【填空题】表现贫民意欲反抗的汉乐府诗是( )。
【判断题】扩展库os中的方法remove()可以删除带有只读属性的文件。
【简答题】测验3. 图示阶梯杆的总变形(绝对)为?
【其它】编程实现:输入一个三位数,输出其百位、十位、个位上的数字。
【判断题】任何自然数,它的最大因数和最小倍数都是它本身. ( )
【填空题】5×7=35 ,( )是( )的倍数, ( )是( )的倍数。
【判断题】因为 18÷9=2 ,所以 18 是倍数, 9 是因数. ( )
【单选题】读图2,回答第7~10题。 10.下列措施有利于促进区域环境保护的是
【填空题】借战死者诉说战争灾难的汉乐府诗是( )。
【填空题】9×10=90 ,( )是( )的倍数,( )是( )的因数。
【判断题】pip命令也支持扩展名为.whl的文件直接安装Python扩展库。
【判断题】25÷10=2.5 ,商没有余数,所以 25 能被 10 整除. ( )
【单选题】读图1,回答第2~6题。 5.大气中含量虽很少,但却是影响天气变化的重要物质是
【简答题】63页2,-3+2i
【单选题】关于结构化程序设计方法原则的描述,以下选项中错误的是( )。
【判断题】因为 1.2÷0.6=2 ,所以 1.2 能够被 0.6 整除. ( )
【单选题】以下选项中,说法不正确的是( )。
【判断题】任何一个自然数最少有两个因数. ( )
【单选题】关于算法的描述,以下选项中错误的是( )。
【单选题】读图2,回答第7~10题。 8. 能够使人类免受烈日煎熬的作用是
【单选题】读图1,回答第2~6题。 3. 《天空》中“雨飘”的主要原因是
【判断题】15 的倍数有 15 、 30 、 45 . ( )
【单选题】1. 大气圈
【单选题】读图2,回答第7~10题。 9.大气热量的根本来源是
【判断题】在Windows平台上编写的Python程序无法在Unix平台运行。
【多选题】学习商务礼仪的目的是
【填空题】北宋郭茂倩编的《 》,将汉至唐的乐府诗按音乐分为十二类,涉及汉乐府的主要是郊庙歌辞、鼓吹曲辞、相和歌辞、舞曲歌辞、杂曲歌辞、杂歌谣辞六类。
【单选题】读图1,回答第2~6题。 2.《天空》中“风起、云动、雨飘”发生在
【判断题】Python 3.x和Python 2.x唯一的区别就是:print在Python 2.x中是输出语句,而在Python 3.x中是输出函数。
【单选题】IDLE环境的退出命令是( )。
【其它】编程实现:在屏幕上输出中文字符“你好,世界”。(输出结果中不带双引号)
【判断题】一个数如果能被 24 整除,则这个数一定是 4 和 8 的倍数. ( )
【判断题】一个数的倍数一定大于这个数的因数. ( )
【单选题】读图2,回答第7~10题。 7. “天空”能够散发温暖的辐射是
【填空题】讲述焦仲卿与刘兰芝恩爱故事的汉乐府诗是《 》。
【判断题】一个数的因数的个数是有限的,一个数的倍数的个数是无限的. ( )
【填空题】14-7=( ) 11-6=( ) 11-7=( ) 13-7=( )
【判断题】Python 3.x完全兼容Python 2.x。
【单选题】读图1,回答第2~6题。 4.能够保护人类免受紫外线伤害的臭氧集中在
【单选题】读图1,回答第2~6题。 6. 以下各圈层对人类活动影响,叙述正确的是
更多相关内容 -
C语言编程练习 6....即:任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律
2020-05-11 19:18:03即:任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律: (1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数; (2)将组成该四位数的四个数字由小到大排列,形成...题目描述:
*验证卡布列克运算。即:任意一个四位数,只要它们各个位上的数字是不全相同的,就有这样的规律:
(1)将组成该四位数的四个数字由大到小排列,形成由这四个数字构成的最大的四位数;
(2)将组成该四位数的四个数字由小到大排列,形成由这四个数字构成的最小的四位数(如果四个数字中含有0,则得到的数不足四位);
(3)求两个数的差,得到一个新的四位数(高位零保留)。
重复以上过程,最后得到的结果总是6174。这个数被称为卡布列克常数。请编写一个递归函数,完成以上的卡布列克运算。
**输入格式要求:"%d" 提示信息:“Enter number:”
**输出格式要求:" [%d]:%d-%d=%d\n"
程序运行示例如下:
Enter number: 1234
[1]:4321-1234=3087
[2]:8730-378=8352
[3]:8532-2358=6174参考代码:
#include <stdio.h> int count=0; main() { int n; printf("Enter number:"); scanf("%d",&n); vr6174(n); } vr6174(int num) { int each[4],max,min; if(num!=6174&&num) { parse_sort(num,each); max_min(each,&max,&min); num=max-min; printf(" [%d]:%d-%d=%d\n",++count,max,min,num); vr6174(num); } } parse_sort(int num,int *each) { int i,*j,*k,temp; for(i=0;i<=4;i++) { j=each+3-i; *j=num%10; num/=10; } for(i=0;i<3;i++) for(j=each,k=each+1;j<each+3-i;j++,k++) if(*j>*k) { temp=*j; *j=*k; *k=temp;} return; } max_min(int *each,int *max,int *min) { int *i; *min=0; for(i=each;i<each+4;i++) *min=*min*10+*i; *max=0; for(i=each+3;i>=each;i--) *max=*max*10+*i; return; }
以上就是对于本题的解题思路了,如果你觉得我的文章对你有用请点个赞支持一下吧。如果此文章有错误或者有不同的见解欢迎评论或者私信。wink~
-
详解如何从数字串中移除K位数字使剩余数字最小
2020-07-05 11:22:11题目:给定一个以字符串表示的非负整数num,移除这个数中的任意 k 位数字,使得剩下的数字最小。 注意:剩余数字的前导0要删除,如果最后结果是空串,则需要返回 "0"。 工具/原料 Eclipse JDK1.8 方法...题目:给定一个以字符串表示的非负整数 num,移除这个数中的任意 k 位数字,使得剩下的数字最小。
注意:剩余数字的前导0要删除,如果最后结果是空串,则需要返回 "0"。
工具/原料
-
Eclipse
-
JDK1.8
方法/步骤
-
-
有趣的算法题之移除 k 位数字后使剩下的数字最小
2018-11-27 20:52:13原文:微信公众号:程序员小灰——删去k个数字后的最小值 1 题目 给定一个整数,从该整数中去掉 k 个数字,使剩下的数字...一个数字移除 1 位后肯定会变小,问题是变小多少,最简单直接的方法是移除掉最后一位,...1 题目
给定一个整数,从该整数中去掉 k 个数字,使剩下的数字组成的新整数尽可能小,那么应该选择去掉的数字。
2 思路
感觉这是个挺有意思的问题,所以当时认真的读了读也认真的想了想,真是不想不知道,一想才发现算法真的分优劣。首先这个题目是什么意思呢?一个数字移除 1 位后肯定会变小,问题是变小多少,最简单直接的方法是移除掉最后一位,那么会变小 10 倍左右,假如有一个 5 位整数 54127,移除 1 位数字如果移除最后一位变成 5412,变小了 10 倍左右,但是这肯定不是最小的。移除 1 位后变成 4 位整数,既然位数一样,那么肯定是高位的数字越小结果就越小,对于 54127 显然移除第一位变成 4127 是最小的,变小了 13倍左右。
那么是不是移除第一位一定是最小的呢?也不是,假设有一个 5 位整数 45127,移除 1 位数字如果移除最后一位变成 4512,变小了 10 倍左右,如果移除第一位变成 5127,最高位反而升高了,只变小了 8.8 倍左右,还不如移除最后一位,所以我们选择去掉的数字的原则应该是原整数的所有数字从左到右进行比较,如果发现某一位的数字大于它右面的数字,那么在删除该数字后,必然会使得该数位的值降低,因为右面比它小的数字顶替了它的位置。
再给一个例子,假如有一个整数 541270936,需要移除 3 个数字,按照上面的原则,第一个去掉的应该是 5,因为 5>4,;第二个去掉的应该是 4,因为 4>1,第三个去掉的应该是 7,因为 1<2,2<7,7>0,所以 541270936 去掉 3 个数字后得到的最小整数应该是 120936。
而且注意一下,假如有一个整数 30200,需要移除 1 个数字,按照上面的原则,应该去掉第一个数字 3,然后剩下的数字为 0200,我们应该记录为 200,所以我们要考虑处理后的数字前面要去掉 0 的情况。
3 代码实现
理清思路后,就来简单用代码实现一下这个算法,
@Test public void testRemoveKDigits() { removeKDigits1("541270936", 3); } /** * author:MrQinshou * Description:初版,以 k 为外层循环,每次外循环再去遍历全部字符串,每次删除一个数字 * date:2018/11/27 20:21 * param * return */ public static String removeKDigits1(String string, int k) { // 以删除多少位为外层循环 for (int i = 0; i < k; i++) { // 定义一个标志位记录是否有高位的数字被删除 boolean hasCut = false; // 每次循环遍历目标字符串的所有字符 for (int j = 0; j < string.length() - 1; j++) { char a = string.charAt(j); char b = string.charAt(j + 1); // 如果当前字符(高位数字)比下一个字符(低位数字)要大 // 则截取字符串,并置标志位为 true if (a > b) { string = string.substring(0, j) + string.substring(j + 1, string.length()); hasCut = true; break; } } // 如果没有高位数字被删除,则删除最后一个数字 if (!hasCut) { string = string.substring(0, string.length() - 1); } // 去掉前面的 0 string = removeZero(string); System.out.println("string--->" + string); } if (string.length() == 0) { System.out.println("删除 " + k + " 个数字后的最小值--->" + 0); return "0"; } System.out.println("删除 " + k + " 个数字后的最小值--->" + string); return string; } /** * author:MrQinshou * Description:去掉字符串前面的 0 * date:2018/11/27 20:23 * param * return */ private static String removeZero(String string) { for (int i = 0; i < string.length() - 1; i++) { if (string.charAt(0) != '0') { break; } string = string.substring(1, string.length()); } return string; }
运行一下打印如下:
结果是木有任何问题的,LeeCode 上有这道题,移掉 K 位数字,放到上面是玩耍一下(记得注释掉打印):
貌似效率是有点低呀,接着往下看发现智慧与美貌并存的小灰介绍了另外一种方式来解答该题目。
4 优化
原整数的长度记为 n,上面的算法因为外层循环 k 次,内层循环每次为 n 次,时间复杂度为 O(kn),最坏的情况下 k=n,则时间复杂度为 O(n²)。我们可以换一种思路,不让它嵌套循环,只遍历原整数一遍,用一个栈来存放所有数字,让数字一个个入栈,然后当入栈的数字比前面的数字要小时,则让前面的数字出栈,最后把栈内元素去掉 0 再处理成字符串,变成我们想要的结果。
/** * author:MrQinshou * Description:最终版,用栈来实现 * date:2018/11/27 20:23 * param * return */ public static String removeKDigits(String string, int k) { // 创建一个栈,用于接收所有的数字 char[] stack = new char[string.length()]; int top = 0; // 定于一个 copyK 等于 k,用于记录需要移除多少位数字,也就是需要 // 出栈多少次,k 在最后还要用于确定新整数的长度,所以不要直接 // 操作 k int copyK = k; for (int i = 0; i < string.length(); i++) { // 前一个数字大于当前数字时并且还有剩余次数,前一个数字出栈,栈顶指针前移 // 注意这里是 while 不能是 if,如整数 45127,k=2 时,当指针 // 指向数字 1 时,如果用 if,只会比较一次,让前一个数字 5 出 // 栈,但 1 仍小于 4,所以 4 也应该出栈,所以需要用 while // 比较完前面所有数字 while (top > 0 && stack[top - 1] > string.charAt(i) && copyK > 0) { top--; copyK--; } stack[top] = string.charAt(i); top++; System.out.println("stack--->" + Arrays.toString(stack)); } // 找到栈中第一个非 0 数字的位置,以此构建新的整数字符串 int offset = 0; for (int i = 0; i < stack.length; i++) { if (stack[offset] == '0') { offset++; } // 加了 else 跳出后反而效率会降低,一脸懵逼 // else { // break; // } } // 新整数的长度为原整数的长度减去 k // 如果 offset 大于等于新整数的长度,则返回 0,否则从第一个 // 非 0 数字开始截取到与新整数长度相等的数字作为返回值 System.out.println("删除 " + k + " 个数字后的最小值--->" + (offset >= string.length() - k ? "0" : new String(stack, offset, string.length() - k - offset))); return offset >= string.length() - k ? "0" : new String(stack, offset, string.length() - k - offset); }
上面的遍历时的 while 要注意,不能是 if,这个问题我刚开始也纠结了好久,如整数 45127,k=2 时,当指针指向数字 1 时,如果用 if,只会比较一次,而且比 1 大的应该有 5 和 4 两个数字。
运行结果如下:
接下来就可以在 LeeCode 上愉快地玩耍了(记得注释掉打印),最后的去掉 0 我改成了 for 循环没有用小灰文中的 while 循环,效率还高了一点点:
5 总结
以前在面试中没有怎么遇到过算法题,刚开始看到这个题目的时候还觉得很有趣,等自己真的去理解思路的时候还是有点困难,特别是后面的优化,这也说明了栈这种数据结构也是蛮有用的,继续努力。
-
删除k位数字使得最终的数字最小算法
2018-11-24 00:25:44给定一个非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的值小于 10^10000 且 ≥10^ k。 num 不会包含任何前导零。 示例 1 : 输入: num = 1432219, k = 3 输出: 1219 解释: 移除掉三个... -
贪心算法:N位数删除K个数字,使剩下的数字串最小
2018-09-01 18:20:33题目:一个n位的数,去掉其中的k位,问怎样去掉使得留下来的那个(n-k)位的数最小? 分析:(删数问题,可用贪心算法求解),方法就是从简单入手,慢慢复杂。从n=1开始推导就会发现规律, 现在假设有一个数,... -
移除k位数字(给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。...
2020-05-26 20:29:45给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 思路:单调栈(贪心+栈) class Solution { /* 单调栈的另一个应用,思想为删除靠前的较大的数能够使得最后的数值最小。... -
移除这个数中的 k 位数字,使得剩下的数字最小
2018-04-11 13:36:53*给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小 */ class Solution { public String removeKdigits(String num, int k) { String resullt =""; List list =new... -
删除k个数字使剩下数字最小(大)
2018-12-07 22:18:49如:1593121212去掉3个数,剩下1121212最小。 思路如下: 删除k个,可以采用贪心算法,每次删除1个 那么每次删哪一个呢? 若N<2,那就不用纠结了,因为最多只有一个选择 若N>=2,则该整数可以写成XabY... -
C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和
2021-03-17 23:33:30从键盘上输入一个正整数,计算并输出该数的各位数字之和具体信息答:思路:定义变量a接受键盘输入和变量sum保存a的各位数字之和,依次对a进行除10操作,并把a除10的余数加到sum中,直到a为0为止,sum最终的值就是a个... -
微型计算机能处理的最小数据单位是什么
2021-06-16 00:54:36微型计算机能处理的最小...比特(Binary digit),简称为Bit,是信息量的度量单位,资讯的最小单位,也指二进制数字中的一位。比特由数学家John WilderTukey提出,最早在香浓着名的论文《通信的数学理论》中被正式使用... -
给定一个以字符串表示的非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。
2020-04-26 17:34:35给定一个以字符串表示的非负整数num,移除这个数中的k位数字,使得剩下的数字最小。 注意: num的长度小于 10002 且≥k。 num不会包含任何前导零。 示例 1 : 输入: num = "1432219", k = 3 输出: "1219" 解释: ... -
构成存储器的最小单位是什么
2021-07-29 08:10:12在电子计算机内,信息的最小表示单位是一个二进制“位”,它可以存储一个二进制“0”或者“1”,而CPU访问存储器的最小单位就是8位二进制数组成的“字节”。在计算机的硬件技术中,构成存储器的最小单位是字节(Byte)... -
寻找神秘4位数:在0-9十个数字中任意选择4个数字,如选2,9,8,4这四个数字,组成最大的数是9842,最小的数是...
2020-10-15 11:14:55寻找神秘4位数:在0-9十个数字中任意选择4个数字,如选2,9,8,4这四个数字,组成最大的数是9842,最小的数是2489,然后相减,再把得到的4位数组成的最大与最小值相减,在这样重复的过程中,你能找到一个神秘的四位数... -
输入一个三位数的整数,求这个三位数每一位上数字的和是多少。例如,输入: 382,输出:和为 13。 编写 ...
2020-12-30 16:18:25输入一个三位数的整数,求这个三位数每一位上数字的和是多少。例如,输入: 382,输出:和为 13。 编写 Python 程序实现上述要求更多相关问题【判断题】在T-s图上,任意两条可逆绝热过程线不能相交。【单选题】人们... -
JAVA之输出一个四位整数的各位数字之和
2017-01-23 11:14:45JAVA之输出一个四位整数的各位数字之和 -
C语言中的各种百分号都代表什么意思? c语言中百分号后的数字是
2020-12-24 19:39:37%c:单个字符%d:十进制有符号整数%e:以“科学记数法”的形式输出十进制的浮点数%f:输出十进制浮点数,不带域宽时,保留6位小数。%g:选用e或f格式中较短的输出十进制浮点数不输出零%0:无输出无符号八进制整数%p... -
数字字符串删除n个字符,使结果最小
2019-04-02 16:18:34有一个字符串,仅有数字组成,现在将字符串的删除n个字符,使得剩下的字符组成的数字最小,不能打乱字符的顺序。 输入样例: 1221 2 输出样例: 11 问题分析 #include <iostream> #include <string> ... -
设置输入框只能输入数字,长度不能超过11位,最小为0,手机输入专用
2018-11-28 18:32:36<input type="text" placeholder="11位手机号" name="telephone" maxlength='11' min="0" onkeyup="value=value.replace(/[^0-9]/g,'')"> -
PAT1023 组个最小数给定数字 0-9 各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得...
2021-02-09 09:57:56例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就是 10015558。 现给定数字,请编写程序输出能够组成的最小的数。(题目来源PAT,侵删) 输入格式: 输入在一行中给出 10 个非负整数,顺序表示我们拥有... -
c语言求一个三位数正整数n各个数位上数据的立方和
2021-05-23 06:02:56用C语言编写程序,输入一个正整数n(1#include"stdio.h"intmain(){\x09inti,j,n;...ic语言输出所有三位数中各个位数的立方等于这个三位数的数#includemain(){inta=1,b=0,c=0,q;for(;aC语言编写程序:输入一个正... -
给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数,求组成的新数最小的...
2020-06-13 21:51:26给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数。对于给定的n和k,设计⼀个算法,找出剩下数字组成的新数最少的删数方案。 这一道题来自zyq老师的算法分析与设计实验当中,因为... -
【c++】寻找四位数的 “数字黑洞”
2020-11-19 00:32:01任意一个4位自然数,将组成该数的各位数字重新排列,形成一个最大数和一个最小数, 之后两数相减,其差仍为一个自然数。 重复进行上述运算,会发现一个神秘的数。 描述 输入: 一个4位的自然数。 输出: 从该4位... -
编程练习:使用for循环,编程求100~...水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身
2020-03-31 14:28:09编程练习:使用for循环,编程求100~999之间所有的水仙花数。水仙花数是指一个n位数(n≥3),它的每个位上的数字的...水仙花数是指一个n位数(n≥3),它的每个位上的数字的n次幂之和等于它本身。(例如:1^3 + 5^3+ 3^3 = ... -
四位数字密码锁
2019-11-20 11:50:48设计一个保险箱用的4位数字密码锁,该锁有规定的地址代码A、B、C、D 4个输入端和一个开箱钥匙孔信号E的输入端,锁的密码由实验者自编。当用钥匙开箱时,如果输入的4位密码正确,则保险箱被打开;否则,电路将发出... -
java数字位数不足在前后补0
2021-02-12 15:32:47java整数或数字字符串位数不足前面或后面补零的方法,一般都是使用自定义简单封装、String.format、NumberFormat等都可以实现。自定义简单封装/***数字不足位数前后补0*@paramnum参与补零的数字*@paramlen最终位数... -
正则表达式校验密码必须是包含大小写字母、数字、特殊符号的8位以上组合
2021-04-29 17:04:50$pattern = "/^(?![A-Za-z0-9]+$)(?... 1、排除大写字母、小写字母、数字、特殊符号中1种组合、2种组合、3种组合,那么就只剩下4种都包含的组合了 2、表达式为:^(?![A-Za-z0-9]+$)(?![a-z0-9\W]+$)(?![A. -
数字电路四位二进制全加器实验报告_数字电路笔记
2020-10-31 04:10:11数字电路写给读者 作者是华中科技大学本科生,这是我的数字电路笔记 感谢你阅读本文。...传输 串行:在计算机总线或其他数据通道上,每次传输一个bit 并行:所有bit同时传送BCD编码 意义:用4个bit... -
将数字重新组合成一个最大的数和最小的数 相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。...
2020-07-27 20:03:52将数字重新组合成一个最大的数和最小的数 相减,重复这个过程,最多七步,必得6174。即:7641-1467=6174。将永远出不 来。 求证:所有四位数数字(全相同的除外),均能得到6174。输出掉进黑洞的 步数。 // 传入数据... -
element el-input 只能输入数字,限制最大最小,小数位数 --使用 directive
2019-04-25 11:42:11条件: 限制最大 100,最小0,最长两位小数 输入大于100,自动变为100. 超出,2位小数,自动四舍五入 以下是使用全局指令的案例 (也可以使用局部指令,可以参考文档 ...