算法
yanglxxxxxxx
这个作者很懒,什么都没留下…
展开
-
leetcode 1431 拥有糖果最多的孩子 java实现
题是简单,但是有几个点想记录一下。题目给你一个数组candies和一个整数extraCandies,其中candies[i]代表第 i 个孩子拥有的糖果数目。对每一个孩子,检查是否存在一种方案,将额外的extraCandies个糖果分配给孩子们之后,此孩子有 最多的糖果。注意,允许有多个孩子同时拥有 最多的糖果数目。示例 1:输入:candies = [2,3,5,1,3], extraCandies = 3输出:[true,true,true,false,true...原创 2020-05-26 15:31:05 · 323 阅读 · 0 评论 -
【算法】——求n以内两个数最小公倍数和最大公约数差值的最大值
其实思路就是而别简单,照着话说,只要你知道这个定理,你就什么都写出来了。是的,不用怀疑,最大值就是n*(n-1)-1;import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sca = new Scanner(System.in);...原创 2020-03-31 22:43:24 · 440 阅读 · 1 评论 -
【算法】——查找与排序之递归
递归算法基本的三个步骤找重复找重复中的变化量——参数找参数的变化趋势——设计出口简短来说就是——找重复,找变化,找边界递归可以分解为直接量+小规模的子问题,或者分解为多个规模的小问题。1.求阶乘问题为求n!即n*(n-1)*(n-2)……*1static int f (int n){ if(n==1) return 1; return n*f(n-1);}(未完...原创 2020-03-31 22:35:48 · 105 阅读 · 0 评论 -
【算法】——位运算之出现k次与出现1次
题目:一个数组中,一个数字出现1次,其他数均出现k次,输出只出现1次的数第一种解法:一个键值对数组储存,存储出现的数字以及其对应出现的次数。第二种解法:做不进位加法首先要知道一个结论,2个相同的二进制数,做不进位加法,结果为0;10个相同的十进制数,做不进位加法,结果为0;k个相同的k进制数,做不进位加法,结果为0;思路就是:全部转为k进制的数,相加,最后剩下的就是只出现1...原创 2020-03-06 21:06:20 · 561 阅读 · 0 评论 -
【算法】——位运算之将整数的奇偶位互换
举例:如1001,奇偶位互换之后是0110;第一步分别将该整数与0101和1010相与,即分别保留奇数位和偶数位(因为只有当两个1相与才为1,0与0或1相与都是0)简短来说就是保留奇数位,保留偶数位,奇数位左移,偶数位右移,二者再异或。(图上传不了了,,,)核心代码:int x = (i&0xaaaaaaaa);int y = (i&0x55555...原创 2020-03-01 15:24:36 · 308 阅读 · 0 评论 -
【算法】——位运算之是不是2的整数次方
这道题我觉得最大的问题在于不知道二进制表示的2的整数次方是怎么样子的,其实只要知道这个之后,写的时候就简单了。2的整数次方——二进制表示时,有一个1。例:2,4,8——10,100,1000核心代码:if(((N-1)&N==0))//是2的整数次方...原创 2020-02-29 22:17:45 · 127 阅读 · 0 评论 -
【算法】——位运算之二进制中1的个数
输入一个整数,输出该数二进制表示中1的个数。①将1向左移int count = 0;for(int i = 0;i<32;i++){ if((number&(1<<i))==(1<<i)){ count++; }}System.out.println(count);如果 if 语句那看不懂的话,自己拿个数字实...原创 2020-02-29 22:13:32 · 168 阅读 · 0 评论 -
【算法】——位运算之找到落单的数
与上个题有点相似,上个题是找唯一成对的数,该题为找出唯一不成对的即可。如果该数组是[1,1,2,2,3,3,4,4,5,6,6]将该数组逐位相与,最后剩下的就是落单的那个数。...原创 2020-02-29 21:56:50 · 370 阅读 · 0 评论 -
【算法】——位运算之寻找重复数
这里可以将leetcode中的287题-寻找重复数作为示例题目:①借助A^A=0,A^0=A的性质若输入的数组是[1,3,4,2,2],然后将该数组与[1,2,3,4]分别相与,总共有三个2,其他数字均出现两次,异或之后变成了0,只剩下一个2,即2即为所求。简短的核心代码为:int x = 0;for(int i = 1;i<=N-1;i++){//N为数组长度...原创 2020-02-29 21:47:28 · 1955 阅读 · 2 评论 -
【算法】——位运算之基础篇
在电脑中可以存储的最小的单元是字节(Byte),而我们常说的位(bit)虽然比字节小(1Byte = 8bit),但是它并不是计算机中存储的最小单元。先来说几个基本运算,&(与),|(或),~(非)...原创 2020-02-29 20:58:20 · 125 阅读 · 0 评论 -
【leetcode】1221 分割平衡字符串
题目描述就不写了,直接把代码写出来了。class Solution { public int balancedStringSplit(String s) { if(s==null||s.equals("")) return 0; int num = 0; int m = 0,n = 0; for(int i = 0;i <s.length...原创 2019-12-01 17:59:54 · 114 阅读 · 0 评论 -
【leetcode】434-字符串中的单词数
还是先来看题目:统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。请注意,你可以假定字符串里不包括任何不可打印的字符。示例:输入: "Hello, my name is John"输出: 5一看,觉得这不简单吗,想着就得用字符串分割,直接用一个split函数就解决问题了。还是先正确的结果放上去吧。思路也简单,首先将开头与末尾的空格通过trim()方法去掉,然...原创 2019-12-01 17:51:01 · 87 阅读 · 0 评论 -
【leetcode】删列造序 java实现
【题目】给定由N个小写字母字符串组成的数组 A,其中每个字符串长度相等。删除 操作的定义是:选出一组要删掉的列,删去A 中对应列中的所有字符,形式上,第 n列为[A[0][n], A[1][n], ..., A[A.length-1][n]])。比如,有A = ["abcdef", "uvwxyz"],要删掉的列为{0, 2, 3},删除后 A为["bef", "v...原创 2019-09-24 22:38:01 · 120 阅读 · 0 评论 -
1008 锤子剪刀布 PAT(java实现)
题目描述大家应该都会玩“锤子剪刀布”的游戏:现给出两人的交锋记录,请统计双方的胜、平、负次数,并且给出双方分别出什么手势的胜算最大。输入描述:输入第1行给出正整数N(<=105),即双方交锋的次数。随后N行,每行给出一次交锋的信息,即甲、乙双方同时给出的的手势。C代表“锤子”、J代表“剪刀”、B代表“布”,第1个字母代表甲方,第2个代表乙方,中间有1个空格。...原创 2019-01-21 21:23:04 · 266 阅读 · 0 评论 -
【leetcode】最长公共前缀
题目:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:所有输入只包含小写字母a-z。来源:力扣(LeetCode)链接:h...原创 2019-07-16 10:05:07 · 78 阅读 · 0 评论 -
【leetcode】罗马数字转整数
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列...原创 2019-07-15 16:16:36 · 96 阅读 · 0 评论 -
【蓝桥杯】 算法训练 矩阵乘法 Java实现
问题描述 输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。输入格式 第一行,空格隔开的三个正整数m,s,n(均不超过200)。 接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。 接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。输出格式 m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。样例输入2 3 21...原创 2019-04-14 18:48:41 · 422 阅读 · 0 评论 -
【蓝桥杯】 算法训练 大小写转换 Java实现
问题描述 编写一个程序,输入一个字符串(长度不超过20),然后把这个字符串内的每一个字符进行大小写变换,即将大写字母变成小写,小写字母变成大写,然后把这个新的字符串输出。 输入格式:输入一个字符串,而且这个字符串当中只包含英文字母,不包含其他类型的字符,也没有空格。 输出格式:输出经过转换后的字符串。输入输出样例样例输入AeDb样例输出aEdBimport jav...原创 2019-04-14 18:43:49 · 171 阅读 · 0 评论 -
【蓝桥杯】算法训练 Anagrams问题 java
问题描述 Anagrams指的是具有如下特性的两个单词:在这两个单词当中,每一个英文字母(不区分大小写)所出现的次数都是相同的。例如,“Unclear”和“Nuclear”、“Rimon”和“MinOR”都是Anagrams。编写一个程序,输入两个单词,然后判断一下,这两个单词是否是Anagrams。每一个单词的长度不会超过80个字符,而且是大小写无关的。 输入格式:输入有两行,分别为两...原创 2019-04-13 10:08:52 · 201 阅读 · 0 评论 -
【蓝桥】ALGO-92 算法训练 前缀表达式 java
问题描述 编写一个程序,以字符串方式输入一个前缀表达式,然后计算它的值。输入格式为:“运算符 对象1 对象2”,其中,运算符为“+”(加法)、“-”(减法)、“*”(乘法)或“/”(除法),运算对象为不超过10的整数,它们之间用一个空格隔开。要求:对于加、减、乘、除这四种运算,分别设计相应的函数来实现。 输入格式:输入只有一行,即一个前缀表达式字符串。 输出格式:输出相应的计算结果(...原创 2019-04-13 08:55:33 · 134 阅读 · 0 评论 -
【牛客网】A+B和C (15) java实现
时间限制1000 ms内存限制32768 KB代码长度限制100 KB判断程序Standard(来自小小)题目描述给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。输入描述:输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。...原创 2019-03-28 14:55:02 · 378 阅读 · 0 评论 -
【蓝桥杯】算法提高 P1001(大数乘法) java
当两个比较大的整数相乘时,可能会出现数据溢出的情形。为避免溢出,可以采用字符串的方法来实现两个大数之间的乘法。具体来说,首先以字符串的形式输入两个整数,每个整数的长度不会超过8位,然后把它们相乘的结果存储在另一个字符串当中(长度不会超过16位),最后把这个字符串打印出来。例如,假设用户输入为:62773417和12345678,则输出结果为:774980393241726.输入: 6277...原创 2019-03-23 09:50:34 · 213 阅读 · 1 评论 -
【蓝桥杯】算法训练 P0505 java
一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5!=1*2*3*4*5=120,因此5!最右边的那个非0的数...原创 2019-03-21 15:42:13 · 246 阅读 · 0 评论 -
【蓝桥杯】第3周问题 (楼号m和n之间的最短移动距离)
我直接放代码吧,这道题比较简单,应该能看懂。import java.util.Scanner;public class Main { public static void main(String[] args) { int num = 0; Scanner sca = new Scanner(System.in); int a = sca.nextInt(); int ...原创 2019-03-20 22:22:44 · 170 阅读 · 0 评论 -
【leetcode】整数转罗马数字
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列...原创 2019-07-16 15:41:11 · 92 阅读 · 0 评论