![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
小苗要努力变强
小苗,要努力变强
展开
-
3769. 移动石子---acwing每日一题210716
题目一共有 n 个箱子排成一排,从左到右依次编号为 1∼n。其中,第 i 号箱子中放有 ai 个石子。现在,你可以进行最多 d 次操作。每次操作可以将一个石子从一个箱子移动至另一个与其相邻的箱子里。我们希望通过合理操作使得 1 号箱子内的石子数量尽可能大。请问,这个最大可能值是多少?输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含两个整数 n 和 d。第二行包含 n 个整数 a1,a2,…,an。输出格式每组数据输出一行结果,表示答案。数据范围1≤T≤1原创 2021-07-16 19:50:58 · 288 阅读 · 0 评论 -
3768 字符串删减---acwing每日一题210715
题目描述给定一个由 n 个小写字母构成的字符串。现在,需要删掉其中的一些字母,使得字符串中不存在连续三个或三个以上的 x。请问,最少需要删掉多少个字母?如果字符串本来就不存在连续的三个或三个以上 x,则无需删掉任何字母。输入格式第一行包含整数 n。第二行包含一个长度为 n 的由小写字母构成的字符串。输出格式输出最少需要删掉的字母个数。数据范围3≤n≤100输入样例1:6xxxiii输出样例1:1输入样例2:5xxoxx输出样例2:0输入样例3:10xxxxx原创 2021-07-15 19:39:55 · 192 阅读 · 0 评论 -
常见排序算法JAVA版代码时间复杂度空间复杂度稳定性(标准命名及标准写法)
常见排序算法0、概述0.1、排序的稳定性0.2、排序的分类0.3、排序的性能评价0.4、总体比较1、插入排序1.1、直接插入排序1.2、希尔排序2、交换排序2.1、冒泡排序2.2、快速排序3、选择排序3.1、简单选择排序3.2、堆排序0、概述0.1、排序的稳定性当待排序列关键字各不相同时,排序结果唯一,否则结果不唯一。在待排序列文件中,若存在多个关键字相同的记录,经过排序后这些具有相同关键字的记录之间的相对次序保持不变,则该方法是稳定的。0.2、排序的分类内部排序和外部排序,此处只讨论内部排序内原创 2021-07-03 16:26:47 · 368 阅读 · 0 评论 -
算法---反转链表
这个也是模板了/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode ReverseList(ListNode head) { if(head == null) return null;原创 2021-04-29 21:54:03 · 54 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找对于这种右边永远大于左边下边永远大于上边的二维数组来说,右上角和左下角是特殊的对于右上角前面的都小于他,下边的都大于他。如果target>右上角那么这一行都可以排除,坐标直接下移如果target<右上角那么这一列直接排除坐标左移。代码:class Solution { public boolean findNumberIn2DArray(int[][] matrix, int target) { if(matrix.l原创 2020-12-26 17:54:43 · 111 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字class Solution { public int findRepeatNumber(int[] nums) { int len = nums.length; int ans[] = new int[len]; for(int i = 0;i<len;i++) { ans[nums[i]] ++; if(ans[nums[i]]>1)return nums[i]; } return原创 2020-12-23 15:39:57 · 52 阅读 · 0 评论 -
力扣T51数组中的逆序对--困难
代码是正确的但是对于超级大的输入时还是超时了。运用分治排序的思想import java.util.Arrays;public class 数组中的逆序对 { public static void main(String[] args) { int[] arr = {37,40,48,90,32,5,12,3,44,13};// System.out.println(reversePairs(arr)); System.out.println(Arrays.toString(arr原创 2020-11-10 20:40:18 · 223 阅读 · 0 评论 -
蓝桥杯第七届javaB决赛真题及部分解析
第七届T1 愤怒小鸟X星球愤怒的小鸟喜欢撞火车!一根平直的铁轨上两火车间相距 1000 米两火车 (不妨称A和B) 以时速 10米/秒 相对行驶。愤怒的小鸟从A车出发,时速50米/秒,撞向B车,然后返回去撞A车,再返回去撞B车,如此往复....两火车在相距1米处停车。问:这期间愤怒的小鸟撞 B 车多少次?注意:需要提交的是一个整数(表示撞B车的次数),不要填写任何其它内容。T2 反幻方我国古籍很早就记载着2 9 47 5 36 1 8这是一个三阶幻方。每行每列以及原创 2020-10-31 09:33:06 · 186 阅读 · 0 评论 -
力扣T3无重复字符的重复字串--中等
class Solution { public int lengthOfLongestSubstring(String s) { // 哈希集合,记录每个字符是否出现过 Set<Character> occ = new HashSet<Character>(); int n = s.length(); // 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动 int rk =.原创 2020-10-31 08:45:27 · 195 阅读 · 0 评论 -
力扣T2两数相加--中等
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; //构造方法 * ListNode(int x) { val = x; } * } */class Solution { public ListNode addTwoNumbers(ListNode l1, ListNode l2) { L.原创 2020-10-31 08:42:37 · 74 阅读 · 0 评论 -
力扣T1两数之和--简单
class Solution { public int[] twoSum(int[] nums, int target) { int i,j = 0; int flag=0; for(i=0;i<nums.length-1;i++){ for( j=i+1;j<nums.length;j++){ if(nums[i]+nums[j]==target) { flag=1; break; } } if(flag==1) bre.原创 2020-10-31 08:38:38 · 69 阅读 · 0 评论 -
蓝桥杯第七届决赛T2反幻方
题目我国古籍很早就记载着2 9 47 5 36 1 8这是一个三阶幻方。每行每列以及对角线上的数字相加都相等。下面考虑一个相反的问题。可不可以用 1~9 的数字填入九宫格。使得:每行每列每个对角线上的数字和都互不相等呢?这应该能做到。比如:9 1 28 4 37 5 6你的任务是搜索所有的三阶反幻方。并统计出一共有多少种。旋转或镜像算同一种。比如:9 1 28 4 37 5 67 8 95 4 16 3 22 1 93 4 86 5 7原创 2020-10-30 21:51:16 · 92 阅读 · 0 评论 -
蓝桥杯---平方十位数
答案:9814072356由0~9这10个数字不重复、不遗漏,可以组成很多10位数字。这其中也有很多恰好是平方数(是某个数的平方)。比如:1026753849,就是其中最小的一个平方数。请你找出其中最大的一个平方数是多少?注意:你需要提交的是一个10位数字,不要填写任何多余内容。public class test { public static void main(String[] args) { long ans ; long i; for(i = 9999原创 2020-10-28 22:32:15 · 183 阅读 · 0 评论 -
蓝桥杯决赛第八届T2生命游戏-尝试与猜测
题目:康威生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。 这个游戏在一个无限大的2D网格上进行。初始时,每个小方格中居住着一个活着或死了的细胞。下一时刻每个细胞的状态都由它周围八个格子的细胞状态决定。具体来说:1. 当前细胞为存活状态时,当周围低于2个(不包含2个)存活细胞时, 该细胞变成死亡状态。(模拟生命数量稀少)2. 当前细胞为存活状态时,当周围有2个或3个存活细胞时, 该细胞保持原样。3. 当前细胞为存活状态时,当周围有3个以上的存活细胞时,该细胞变成死亡原创 2020-10-28 22:06:16 · 311 阅读 · 0 评论 -
蓝桥杯第六届javaB决赛真题及解析
第六届T1 分机号X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如:751,520,321 都满足要求,而,766,918,201 就不符合要求。现在请你计算一下,按照这样的规定,一共有多少个可用的3位分机号码?请直接提交该数字,不要填写任何多余的内容。T2 五星填数如【图1.png】的五星图案节点填上数字:1~12,除去7和11。要求每条直线上数字和相等。如图就是恰当的填法。请你利用计算机搜索所有可能的填法有多少种原创 2020-10-27 22:26:11 · 579 阅读 · 2 评论 -
蓝桥杯javaB决赛历届真题6-10届
蓝桥杯javaB决赛历届真题第六届T1 分机号T2 五星填数T3 显示二叉树T4 穿越雷区T5 表格计算T6 铺瓷砖第七届T1 愤怒小鸟T2 反幻方T3 打靶T4 路径之谜T5 碱基T6 圆圈舞第八届T1 平方十位数T2 生命游戏T3 树形显示T4 小计算器T5 填字母游戏第九届T1T2T3 全排列T4 整理玩具T6 防御力第六届T1 分机号X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位。比如:751,520,321 都满足要求,而,766,原创 2020-10-26 23:25:59 · 1827 阅读 · 0 评论 -
2020第十一届蓝桥杯省赛javaB组-七段码
这个题真的不是很简单,主要是很容易错,只有十分,我也没有写出来考完和别人讨论,然后又写了写。虽然写出来了但是写的思路很麻烦。import java.util.Arrays;public class 七段码 { static int[] arr = {0,1,2,3,4,5,6}; public static void main(String[] args) { // System.out.println(7+7+1+10+16+20+19); int ans = 7;原创 2020-10-18 10:29:39 · 2352 阅读 · 8 评论 -
蓝桥杯省赛第七届javaB试题及解析
第七届T1 煤球数目答案T2 生日蜡烛答案T3 凑算式答案T4 分小组答案T5 抽签答案T6 方格填数答案T7 剪邮票答案T8 四平方和T9 取球博弈T10 压缩变换T1 煤球数目有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),…如果一共有100层,共有多少个煤球?请填表示煤球总数目的数字。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。答案171700代码如下,要注意的是num原创 2020-10-15 22:17:56 · 437 阅读 · 0 评论 -
2020蓝桥杯第十一届校内模拟赛
蓝桥杯第十一届省内模拟赛T1:LANQIAO答案T2:合法括号序列T3:12.5MBT4:最少边T5:凯撒密码T6:反倍数T7:摆动序列T8:螺旋矩阵T9:最小植树面积T10:最少费用T1:LANQIAO问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO、AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义。 请问,总共能排列如多少个不同的单词。答案提交 这是一道结果填空的题,你只需要算出结果后提交即可。本题的结果为一个整数,在提交答案时只填原创 2020-10-13 16:41:10 · 338 阅读 · 0 评论 -
蓝桥杯第六届省赛javaB试题及解析(不断更新)
第六届T1 三角形面积答案T2 立方变自身答案T3 三羊献瑞答案T4 循环节长度答案T5 九数组分数答案T6 加法变乘法答案T7 牌型种数答案T8 饮料换购答案T9 垒骰子T10 生命之树T1 三角形面积如【图1】所示。图中的所有小方格面积都是1。那么,图中的三角形面积应该是多少呢?请填写三角形的面积。不要填写任何多余内容或说明性文字。答案28T2 立方变自身观察下面的现象,某个数字的立方,按位累加仍然等于自身。1^3 = 18^3 = 512 5+1+2=817^3 = 49原创 2020-10-08 21:15:44 · 503 阅读 · 0 评论 -
蓝桥杯第五届省赛java试题及解析(不断更新)
第五届T1 武功秘籍答案T2 切面条答案T3 猜字母答案T4 大衍数列答案T5 圆周率答案T6 奇怪的分式在这里插入图片描述答案T7 扑克序列答案T8 分糖果答案T9 地宫取宝T10 矩阵翻硬币T1 武功秘籍小明到X山洞探险,捡到一本有破损的武功秘籍(2000多页!当然是伪造的)。他注意到:书的第10页和第11页在同一张纸上,但第11页和第12页不在同一张纸上。小明只想练习该书的第81页到第92页的武功,又不想带着整本书。请问他至少要撕下多少张纸带走?这是个整数,请通过浏览器提交该数字,不要原创 2020-10-06 16:41:20 · 747 阅读 · 0 评论 -
蓝桥杯第四届省赛javaB试题及解析(不断更新)
第四届T1 世纪末的星期T2 马虎的算式 暴力枚举+dfs全排列枚举答案T3 振兴中华 dfs答案T4 黄金连分数答案T5 有理数类T6 三部排序T7 错误票据T8 幸运数T9 带分数T10 连号区间数T1 世纪末的星期曾有邪教称1999年12月31日是世界末日。当然该谣言已经不攻自破。还有人称今后的某个世纪末的12月31日,如果是星期一则会....有趣的是,任何一个世纪末的年份的12月31日都不可能是星期一!! 于是,“谣言制造商”又修改为星期日......1999年的12月31日是星原创 2020-10-04 12:49:49 · 329 阅读 · 0 评论 -
蓝桥杯历届试题省赛javaB
这里写目录标题第四届T1 世纪末的星期T2 马虎的算式T3 振兴中华T4 黄金连分数T5 有理数类T6 三部排序T7 错误票据T8 幸运数T9 带分数T10 连号区间数第五届T1 武功秘籍T2 切面条T3 猜字母T4 大衍数列T5 圆周率T6 奇怪的分式T7 扑克序列T8 分糖果T9 地宫取宝T10 矩阵翻硬币第六届T1 三角形面积T2T3T4 循环节长度T5T6 加法变乘法T7 牌型种数T8 饮料换购T9 垒骰子T10 生命之树第七届T1 煤球数目T2 生日蜡烛T3 凑算式T4T5T6T7T8T9 取球原创 2020-10-03 09:54:16 · 904 阅读 · 0 评论 -
leetcode-z字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输入: s = “LEE.转载 2020-09-29 17:53:20 · 126 阅读 · 0 评论 -
leetcode--最长回文子串--打印台的多颜色打印
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb” public String longestPalindrome(String s) { int len = s.length(); if(len == 0)return ""; int left = 0; int max =.原创 2020-09-28 22:10:37 · 99 阅读 · 0 评论 -
蓝桥杯第五届矩阵翻硬币
标题:矩阵翻硬币小明先把硬币摆成了一个 n 行 m 列的矩阵。随后,小明对每一个硬币分别进行一次 Q 操作。对第x行第y列的硬币进行 Q 操作的定义:将所有第 ix 行,第 jy 列的硬币进行翻转。其中i和j为任意使操作可行的正整数,行号和列号都是从1开始。当小明对所有硬币都进行了一次 Q 操作后,他发现了一个奇迹——所有硬币均为正面朝上。小明想知道最开始有多少枚硬币是反面朝上的。于是,他向他的好朋友小M寻求帮助。聪明的小M告诉小明,只需要对所有硬币再进行一次Q操作,即可恢复到最开始的状态。.原创 2020-09-05 11:26:54 · 100 阅读 · 0 评论 -
记忆型dfs_第五届蓝桥杯地宫取宝
标题:地宫取宝X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。地宫的入口在左上角,出口在右下角。小明被带到地宫的入口,国王要求他只能向右或向下行走。走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。【数据格式】输入一行3个整数,用空格分开:n.原创 2020-09-04 16:50:17 · 76 阅读 · 0 评论 -
迪杰斯特拉算法_最短路径
最短路径有好几种求法,理解还好。但是代码是真的难搞,看别人代码真的绕不过来,理解不了。今天终于把迪杰特斯拉算法自己写出来了,真的不容易,已经琢磨了一两天了。学到一个专业术语 松弛 //定义所需变量 int n; int[][] edage = new int[n][n]; boolean st[] = new boolean[n]; int dis[] = new int[n];...原创 2020-01-15 11:24:07 · 235 阅读 · 0 评论 -
2019.9.9算法记录
T1第一题(文件命名T1)有奖猜谜 小明很喜欢猜谜语。 最近,他被邀请参加了X星球的猜谜活动。 每位选手开始的时候都被发给7个电子币。 规则是:猜对了,手里的电子币数目翻倍, 猜错了,扣除5个电子币, 扣完为止。 小明一共猜了n条谜语。Ps:n为字符串长度 战果为:vxvxv.....xvxvx(一个仅含v和x的字符串) 其中v表示猜对了,x...原创 2019-10-25 17:56:32 · 182 阅读 · 0 评论 -
力扣-第十一次双周赛(虚拟竞赛)
等差数列中缺失的数字 简单用户通过次数 615用户尝试次数 634通过次数 623提交次数 1255题目难度 Easy有一个数组,其中的值符合等差数列的数值规律,也就是说:在 0 <= i < arr.length - 1 的前提下,arr[i+1] - arr[i] 的值都相等。我们会从该数组中删除一个 既不是第一个 也 不是最后一个的值,得到一个新...原创 2019-10-23 15:47:36 · 322 阅读 · 0 评论 -
十大经典排序算法(1)-冒泡排序法
冒泡排序关键代码 for(int i=1;i<arr.length;i++){ for(int j=0;j<arr.length-i;j++){ if(arr[j]>arr[j+1]){ int tem = arr[j]; arr[j] = arr[j+1]; arr[j+1]= tem; } } }...原创 2019-09-09 15:10:34 · 1206 阅读 · 0 评论 -
十大经典排序算法(2)-选择排序法
选择排序关键代码 for(int i=1;i<=arr.length;i++){ int min = i; for(int j=i+1;j<arr.length;j++){ if(arr[j]<arr[min]){ min = j; } } if(min!=i){ int tmp = arr[min]; arr...原创 2019-09-09 15:20:53 · 140 阅读 · 0 评论 -
十大经典排序算法(3)-插入排序法
插入排序法关键代码for(int i=1;i<arr.length;i++){ int tmp = arr[i]; int j=i; while(j>0&&tmp<arr[j-1]){ arr[j]=arr[j-1]; j--; } if(j!=i){ arr[j]=tmp; } }...原创 2019-09-09 15:29:10 · 200 阅读 · 0 评论 -
十大经典排序算法(4)-希尔排序法
希尔排序法有点难理解,我百度发现这个上面讲的很好理解https://blog.csdn.net/qq_39207948/article/details/80006224不过那个代码里的 insertI 不知道什么意思查也查不出来。...原创 2019-09-10 21:38:14 · 216 阅读 · 0 评论 -
十大经典排序算法(5)-归并排序
归并排序思路:(数据规模 n)1.定义一个方法可以2.把数组分均分为左右两部分(总数为奇数谁多一个都可以)关键代码public static int[] f(int[] arr){ int l = arr.length; if(l==1){ return arr; } int middle =l/2; int[] left = f(Arrays.copyOf...原创 2019-09-11 09:23:37 · 196 阅读 · 0 评论 -
十大经典排序算法(6)-快速排序
快速排序思路:关键代码public static void main(String[] args) { int[] arr = {9,8,7,6,5,4,3,2,1}; quickSort(arr,0,arr.length-1); System.out.println(Arrays.toString(arr)); } public static void quickSor...原创 2019-09-16 11:15:53 · 131 阅读 · 0 评论 -
十大经典排序算法(7)-堆排序
堆排序思路:关键代码原创 2019-09-26 17:46:40 · 150 阅读 · 0 评论 -
十大经典排序算法(8)-计数排序
计数排序public static void sort(int[] arr,int max){ int[] bucket = new int[max+1]; for(int value : arr){ bucket[value]++; } int x=0; for(int i=0;i<=max;i++){ while(bucket[i]>0){ ...原创 2019-09-26 21:03:12 · 160 阅读 · 0 评论 -
十大经典排序算法(9)-桶排序
桶排序a原创 2019-09-28 11:26:40 · 134 阅读 · 0 评论 -
十大经典排序算法(10)-基数排序
基数排序思路:关键代码原创 2019-09-28 15:24:12 · 201 阅读 · 0 评论