- 博客(39)
- 收藏
- 关注
原创 mac下安装Ranger时遇到的错误及解决
mac下安装Ranger时遇到的错误及解决直接运行brew install ranger时出现了如下报错==> Pouring gdbm-1.19.arm64_big_sur.bottle.tar.gztar: Error opening archive: Failed to open '/Users/chenylnti/Library/Caches/Homebrew/downloads/6f87dde2545bd402959fc3f2815a9583f2ba5345f68eff1533dc77
2021-07-18 14:56:37
1187
原创 最快效率求出乱序数组中第k小的数
title: 最快效率求出乱序数组中第k小的数categories:技术算法java蓝桥杯查找与排序tags:查找与排序算法蓝桥杯题目描述:以尽量高的效率求出一个乱序数组中按数值顺序的第K个元素值利用快速排序的分区思想,执行完partition之后,左边元素小于q,右边大于q,q的位置为实际排序后的位置,如果它的序列为k,则p为所求元素,大 于k,继续在左半部分查找,小于k,在右半部分查找时间复杂度期望O(n),最差O(n²)代码:public class _第k个元.
2021-04-23 21:13:51
287
原创 设计一个高效的求a的n次幂的算法
设计一个高效的求a的n次幂的算法代码:static int pow(int a, int n) {if (n == 0) return 1;int res = a;int ex = 1;//能翻while ((ex << 1) <= n) {//翻res = res * res;//指数ex <<= 1;}//不能翻//差n-ex次方没有去乘到结果里面return res * pow(a, n - ex);}...
2021-02-19 10:41:16
322
原创 在有空字符串的有序字符串数组中查找
在有空字符串的有序字符串数组中查找题目描述:有个排序后的字符串数组,其中散布着一些空字符串,编写-一个方法,找出给定字符串(肯定不是空字符串)的索引。分析:在定中的过程中,若定到空的字符串,可以左移或者右移直到有数为止代码:public class _在有空字符串的有序字符串数组中查找 {static int index(String[] arr,String p){int begin=0;int end=arr.length-1;while(begin<end){//取中值i
2021-02-19 10:40:44
238
原创 最长连续递增子序列(部分有序)
最长连续递增子序列(部分有序)题目描述:(1,9,2,5,7,3,4,6,8,0)中最长的递增子序列为(3,4,6,8)。输入: [1,3,5,4,7]输出: 3解释: 最长连续递增序列是 [1,3,5], 长度为3。 尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为5和7在原数组里被4隔 开。输入: [2,2,2,2,2]输出: 1解释: 最长连续递增序列是 [2], 长度为1。分析:代码:public class _最长连续递增子序列 {static int f
2021-02-19 10:40:05
183
原创 旋转数组的最小数字(改造二分法)
旋转数组的最小数字(改造二分法)问题描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入-一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如数组 {3,4,5,1,2}为{1,2,3,4,5}的一 个旋转,该数组的最小值为1分析:利用数组的有序性来提升算法的性能,旋转分开的两部分一定有一部分是有序的,通过观察,最小的数一定是在无序的那一边递归到最后两个数的时候,最小的数一定是在右边代码:public class _旋转数组最小值 {static int f(i
2021-02-18 22:17:25
133
原创 小白上楼梯(递归设计)
题目描述:小白正在上楼梯,楼梯有n阶台阶,小白一次可以上1阶,2阶或者3阶,实现一个方法,计算小白有多少种走完楼梯的方式。提示:设n阶台阶的走法数为f(n)。如果只有1个台阶,走法有1种(一步上1个台阶),即f(1)=1;如果有2个台阶,走法有2种(一种是上1阶,再上1 阶,另一种是一步上2阶),即f(2)=2;如果有3个台阶,走法有4种(一种每次1阶,共一种;另一种是2+1,共两种;第三种是3,共1种),即 f(3)=4;当有n个台阶(n>3)时,我们缩小问题规模,可以这样想:最后一步有三种
2021-02-18 22:16:37
859
1
原创 二分查找递归解法
二分查找递归解法全范围内二分查找 等价于三个子问题: 左边找(递归) 中间比 右边找(递归) 注意:左查找和右查找只选其一static int binarySearch(int[] arr,int low,int high,int key){if(low>high)return -1;int mid=low+((high-low)>>1);int midVal=arr[mid];if(midVal<key){return binarySearch(arr,mid+1,
2021-02-18 19:56:07
359
原创 汉诺塔
问题描述:相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如下图)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。分析:1-N从A移动到B,C作为辅助等价于:1、1~N-1从A移动到C,B为辅助2、把N从A移动到B3、1-N-1从C移动到B
2021-02-16 16:12:29
167
原创 将整数的奇偶位互换
题目描述:将整数的奇偶位互换,假设这个数是9,二进制就是1001,那么得到的结果就是0110分析:首先我们需要两个个数a = 0x55555555b = 0xaaaaaaaaa和b都是16进制数,转换为二进制分别是0101 0101 0101…,1010 1010 1010…(因为1010对应的十进制是10,而10在16进制中是a,0101也同 理),然后将需要改变的数n分别对a和b进行&运算得到c和d,然后将c向左移1位,将d向右移1位,再分别进行异或,就得到所求结果,看下面示例n
2021-02-08 13:23:37
246
原创 出现k次和出现1次的数
题目描述:数组中只有一个数出现了1次,其他的数都出现了k次,请输出出现了1次的数分析:这道题有很多种做法,但是这里我们只考虑如何利用进制的方法去做,多的也不说,大家只要记住一个结论k个相同的k进制数做不进位加法结果为 0。举个例子,3个相同的三进制数,假设个这个数是2,2的三进制是011,所以三个011做不进位加法结果就是011+011+011=000;再比方说10个十 进制数相加,假设这个数是10,做不进位加法最后结果也是0import java.util.*;public class Main
2021-02-08 13:23:04
289
原创 乘2挪整:二进制表示浮点实数
题目描述:给定一个介于0和1之间的实数,(如0.625),类型为double,打印他的二进制表示(0.101),如果该数字无法精确地用32位以内地二进制表示, 则打印“ERROR”分析:因为二进制左移是乘二,右移是除二,0.101(二进制)也就是0.5+0.125=0.625浮点数求二进制实际上就是除二取余的逆运算,先把原数乘二,0.625*2=1.25,小数点前面有1,就把那个1干掉,输出0.1,剩下0.25,再乘二等于0.5不足1,故在后面加0,这时输出为0.10,0.5再乘二恰好是1.0那么同
2021-02-08 13:22:15
470
原创 一条语句判断整数是不是2的整数次方
题目描述:一条语句判断整数是不是2的整数次方分析:把一个数转化为二进制,如果这个二进制只有一位是1其余都是0那么这个二进制就是二的整数次方if((n & (n - 1)) == 0)
2021-02-02 15:24:49
145
原创 数的读法
题目描述:Tom教授正在给研究生讲授一门关于基因的课程,有一件事情让他颇为头疼:一条染色体上有成千上万个碱基对,它们从0开始编号,到几百万,几千万,甚至上亿。 比如说,在对学生讲解第1234567009号位置上的碱基时,光看着数字是很难准确的念出来的。 所以,他迫切地需要一个系统,然后当他输入12 3456 7009时,会给出相应的念法: 十二亿三千四百五十六万七千零九 用汉语拼音表示为 shi er yi san qian si bai wu shi liu wan qi qian
2021-01-30 14:08:31
255
原创 矩形面积交
题目描述:平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴。对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积。资源限制:时间限制:1.0s 内存限制:512.0MB输入格式:输入仅包含两行,每行描述一个矩形。在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示。输出格式:输出仅包含一个实数,为交的面积,保留到小数后两位。样例输入:1 1 3 32 2 4 4样例输出:1.00分析:本题的意思是打出两个矩形
2021-01-24 16:31:25
121
原创 矩阵乘法
问题描述:给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22资源限制:时间限制:1.0s 内存限制:512.0MB输入格式:第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式:输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开样
2021-01-23 21:52:55
123
原创 分解质因数
问题描述:求出区间[a,b]中所有整数的质因数分解。资源限制:时间限制:1.0s 内存限制:512.0MB输入格式:输入两个整数a,b。输出格式:每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)样例输入:3 10样例输出:3=34=225=56=237=78=2229=3310=25提示:先筛出所有素数,然后再分解。数据规模和约定:2<=a<=b<=10000分析:先定义
2021-01-23 18:51:34
204
原创 字符串对比
问题描述:给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一: 1:两个字符串长度不等。比如 Beijing 和 Hebei 2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing 3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing 4:两个字符串长度相等,但是即使是不区分大小写也不
2021-01-22 13:37:16
114
原创 时间转换
问题描述:给定一个以秒为单位的时间t,要求用“</H/>:</M/>:</S/>”的格式来表示这个时间。</H/>表示时间,</M/>表示分钟,而</S/>表示秒,它们都是整数且没有前导的“0”。例如,若t=0,则应输出是“0:0:0”;若t=3661,则输出“1:1:1”。资源限制:时间限制:1.0s 内存限制:512.0MB输入格式:输入只有一行,是一个整数t(0<=t<=86399)。输出格式:输出只有
2021-01-22 13:34:45
235
原创 十六进制转八进制(误)
问题描述:给定n个十六进制正整数,输出它们对应的八进制数。资源限制:时间限制:1.0s 内存限制:512.0MB输入格式:输入的第一行为一个正整数n (1<=n<=10)。 接下来n行,每行一个由09、大写字母AF组成的字符串,表示要转换的十六进制正整数,每个十六进制数长度不超过100000。输出格式:输出n行,每行为输入对应的八进制正整数。【注意】 输入的十六进制数不会有前导0,比如012A。 输出的八进制数也不能有前导0。样例输入: 2 39 1
2021-01-22 13:28:50
155
原创 十六进制转十进制
问题描述:从键盘输入一个不超过8位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的10~15分别用大写的英文字母A、B、C、D、E、F表示。资源限制:时间限制:1.0s 内存限制:512.0MB样例输入:FFFF样例输出:65535分析:把十进制转化为十六进制只需要把十进制数的n位乘16的n减一次方即可。把A转化为10则用了ASCII码的偏差值,A的ASCII码是65,所以只需要将ASCII码大于65的值减65加10就可得到十进制数。import java
2021-01-19 18:07:55
811
原创 特殊回文数
问题描述:123321是一个非常特殊的数,它从左边读和从右边读是一样的。 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。资源限制:时间限制:1.0s 内存限制:512.0MB输入格式:输入一行,包含一个正整数n。输出格式:按从小到大的顺序输出满足条件的整数,每个整数占一行。样例输入:52样例输出:899998989989998899数据规模和约定:1<=n<=54。分析:import java.util.Scanner;
2021-01-19 15:38:35
160
原创 回文数
问题描述:1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。资源限制:时间限制:1.0s 内存限制:512.0MB输出格式:按从小到大的顺序输出满足条件的四位十进制数。分析:public class Main {public static void main(String[] args) { int num=1000; while(num<=9999) { int g=num%10; int s=(num/10)%10; int
2021-01-19 15:38:00
87
原创 特殊的数字
问题描述:153是一个非常特殊的数,它等于它的每位数字的立方和,即153=111+555+333。编程求所有满足这种条件的三位十进制数。资源限制:时间限制:1.0s 内存限制:512.0MB输出格式:按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。分析:通过分离个位、十位、百位可以很轻松得出答案public class Main {public static void main(String[] args) { int i=100; while(i<999) {
2021-01-19 15:34:20
190
原创 杨辉三角
问题描述:杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前4行:11 11 2 11 3 3 1给出n,输出它的前n行。资源限制:时间限制:1.0s 内存限制:256.0MB输入格式:输入包含一个数n。输出格式:输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。样例输入:4样例输出:
2021-01-18 21:11:19
123
原创 查找整数
题目描述:给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。资源限制:时间限制:1.0s 内存限制:256.0MB输入格式:第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式:如果a在数列中出现了,输出它第一次出现的位置(位置从1开始编号),否则输出-1。样例输入:61 9 4 8 3 99样例输出:2数据规模与约定:1 <= n <= 1000。分析:
2021-01-18 18:16:45
75
原创 数列特征
题目描述:给出n个数,找出这n个数的最大值,最小值,和。资源限制:时间限制:1.0s 内存限制:256.0MB输入格式:第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式:输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入:51 3 -2 4 5样例输出:5-211数据规模与约定:1 <= n <= 10000。分析:第一次见这题,不是因为题目的
2021-01-18 16:31:46
101
原创 字母图形
问题描述:利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。资源限制:时间限制:1.0s 内存限制:256.0MB输入格式:输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式:输出n行,每个m个字符,为你的图形。样例输入:5 7样例输出:ABCDEFGBABCDEFCBABCDEDCBABCDED
2021-01-18 16:25:27
256
原创 01字串
问题描述:对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。资源限制:时间限制:1.0s 内存限制:256.0MB输入格式:本题没有输入格式输出格式:输出32行,按从小到大的顺序每行一个长度为5的01串。样例输出:00000000010001000011<以下部分省略>分析:这题只需要从0循环31次,再将他们的二进制输出即可pub
2021-01-17 22:55:03
291
原创 圆的面积
题目描述:给定圆的半径r,求圆的面积。资源限制:时间限制:1.0s 内存限制:256.0MB输入格式:输入包含一个整数r,表示圆的半径。输出格式:输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。样例输入:4样例输出:50.2654825数据规模与约定:1<=r<=10000提示:本题对精度要求较高,请注意π的值应该取较精确的值。你可以使用常量来表示π,比如PI=3.14159265358979323,也可以使用数学公式来求π,比如PI=atan(1
2021-01-17 15:50:04
222
1
原创 闰年判断
问题描述:给定一个年份,判断这一年是不是闰年。当以下情况之一满足时,这一年是闰年:\1. 年份是4的倍数而不是100的倍数;\2. 年份是400的倍数。其他的年份都不是闰年。资源限制:时间限制:1.0s 内存限制:256.0MB输入格式:输入包含一个整数y,表示当前的年份。输出格式:输出一行,如果给定的年份是闰年,则输出yes,否则输出no。样例输入:2013样例输出:no样例输入:2016样例输出:yes数据规模与约定:1990 <= y <= 20
2021-01-17 15:43:47
356
原创 斐波那契数列
问题描述:Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。资源限制:时间限制:1.0s 内存限制:256.0MB输入格式:输入包含一个整数n。输出格式:输出一行,包含一个整数,表示Fn除以10007的余数。样例输入:10样例输出:55样例输入:22样例输出:7704数据规模与约定:1<=n<=1000000.分析:方法一:定义一个数组长度为n的
2021-01-17 15:37:50
174
原创 一题三解:计算二进制中1的个数
题目描述:请实现一个函数,输入一个整数,输出该二进制表示中1的个数例:9的二进制表示为1001,有2位是1方案一:第一种方法:假设这个数是3,其二进制为011,首先将011&001,判断得出来的结果是否等于001,如果等于,说明这个第1位是1;然后将 011&010,判断得出来的结果是否等于010,如果等于,说明这个第2位是1,一直进行下去,判断31位Scanner cin =new Scanner(System.in); int n=cin.nextInt(); int cn
2021-01-15 17:25:40
136
原创 题解:如何找数组中唯一成对的那个数
title: 题解:如何找数组中唯一成对的那个数categories:技术算法java蓝桥杯位运算的奇巧淫技tags:位运算算法蓝桥杯题目描述:1-1000这1000个数放在含有1001个元素的数组中,只有唯一的一个元素值重复,其他均只出现一次。每个数组元素只能访问一次,设计一个算法,将它找出来;不用辅助储存空间,能否设计一个算法实现?分析:根据a^a=0,a^0=a这两条性质,我们可以把数组中的元素全部异或起来,然后再异或一遍不重复的所有元素,就是(1^2^3^4^2).
2021-01-15 16:12:05
288
2
原创 回文字符串的判断
概念:设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数。分析:设置两个指针,一个从第一个开始,一个从后面开始,循环比较两个指针指向的字符是否相等//回文数判断 System.out.println("请输入一个字符串:"); Scanner in =new Scanner(System.in); String str =in.nextLine(); boolean isP
2021-01-15 14:37:16
307
原创 找出距离最小的点对
分析:依次把每个点作为起点,计算和其余点的距离,保留更小的距离 double[][] arr = { {1,1}, {1,0.5}, {2,1}, {3,4}, {2.2,1}, {1,7}, {4,1.8}, {1.1,9}, {3,5}, {5,6} }; double minDis = Double.MAX_VALUE; int minI=0; int minJ=0; //依次把每个点作为起点 for(int i=0;i&l.
2021-01-14 23:54:01
383
2
原创 10进制数转16进制
已知:十进制数123被转换为十六进制数7B。这个转换过程如下:将123除以16,余数为11(十六进制的B)商为7.继续将7除以16,余数为7,商为0.因此7B就是123的十六进制数。//10进制数转16进制 System.out.println("请输入一个整数:"); Scanner in =new Scanner(System.in); int number =in.nextInt(); String hex =""; int shang =number; int yu; while(
2021-01-13 16:00:33
4288
原创 位运算
位运算1.位运算概述程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。比如,and运算本来是一个逻辑运算符,但整数与整数之间也可以进行and运算。举个例子,6的二进制是110,11的二进制是1011,那么6 and 11的结果就是2,它是二进制对应位进行逻辑运算的结果(0表示False,1表示True,空位都当0处理)。110AND 10110010 --> 2——引用自百度2.位运算运算符与运算(&)
2021-01-11 22:06:49
158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人