算法
大柠丶
平芜尽处是青山
展开
-
前缀和+Arrays.binarySearch()
一、Arrays.binarySearch(T[] a, T key)通过二分法在已经排好序的数组中查找指定的元素,并返回该元素的下标1.如果数组中存在该元素,则会返回该元素在数组中的下标2.如果数组中不存在该元素,则会返回 -(插入点 + 1)这里的插入点具体指的是:如果该数组中存在该元素,那个元素在该数组中的下标import java.util.Arrays;public class Test { public static void main(String[] a原创 2022-03-17 20:17:44 · 313 阅读 · 0 评论 -
三大筛法的Java实现(朴素筛法、埃氏筛、欧拉筛)
利用朴素筛法和埃试筛求100以内素数的个数:package com.study.力扣.杂七杂八;public class 素数 { public static void main(String[] args) { System.out.println("求100以内有多少个素数:"); System.out.println("bf:" + bf(100)); System.out.println("eratosthenes:" + erat.原创 2022-02-26 21:57:38 · 1371 阅读 · 0 评论 -
快速幂(Java实现)
package com.study.经典算法题;public class 快速幂 { public static void main(String[] args) { System.out.println(fastPower1(2, 2)); System.out.println(fastPower2(2,2)); } //遍历n次得到a^n,时间复杂度为O(n) //快速幂(O(logn)),n很大的时候,不会爆栈 //递归版.原创 2022-02-26 18:45:58 · 1530 阅读 · 0 评论 -
字符串算法:KMP算法
摘要:设主串(下文中我们称作T)为:a b a c a a b a c a b a c a b a a b b模式串(下文中我们称作W)为:a b a c a b用暴力算法匹配字符串过程中,我们会把T[0] 跟 W[0] 匹配,如果相同则匹配下一个字符,直到出现不相同的情况,此时我们会丢弃前面的匹配信息,然后把T[1] 跟 W[0]匹配,循环进行,直到主串结束,或者出现匹配成功的情况。这种丢弃前面的匹配信息的方法,极大地降低了匹配效率。而在KMP算法中,对于每一个模式串我们会事先计算出模式原创 2022-02-14 23:59:59 · 145 阅读 · 0 评论 -
蓝桥杯——基础练习——数组移动
问题描述 初始数组A[N]中为1,2,..,N,N个数字,现要进行M次操作,每次操作给定一个数字i,记其在数组中的位置为Bi,将A[1]..A[Bi]移到数组末尾。输入格式 输入的第一行包含两个整数N,M。接下来M行,每行一个正整数,表示给定的数字i。输出格式 一行,输出M次操作后的A数组。一开始没读懂题,蓝桥杯题目给的解释太模棱两可了(@_@),其实题目讲了那么长,输入M行,只用考虑最后一行就行了,搞不懂输入M行的意义在哪。。。我这里用到的是队列来解决这个问题的,思路.原创 2022-02-13 18:59:00 · 928 阅读 · 1 评论 -
LeetCode刷题小记——#18.四数之和
给你一个由 n 个整数组成的数组nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):0 <= a, b, c, d< na、b、c 和 d 互不相同nums[a] + nums[b] + nums[c] + nums[d] == target你可以按 任意顺序 返回答案 。https://leetcode-cn.co...原创 2022-02-13 14:10:02 · 425 阅读 · 0 评论 -
LeetCode刷题小记——#15.三数之和
给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。https://leetcode-cn.com/problems/3sum/https://leetcode-cn.com/problems/3sum/这题还是标准的双指针算法,三数之和,只需要先固定一个数字,剩下两个数字当成双指针就行了,但是还需要特别注意,本题需要去重。class Solu原创 2022-02-13 13:02:04 · 161 阅读 · 0 评论 -
蓝桥杯——算法训练——区间k大数查询
我用的最笨的方法了~基本没用什么算法,思路很简单(@_@;)代码如下:package com.study.蓝桥杯.算法训练;import java.util.Arrays;import java.util.Scanner;/** * @author sjn * @date 2022-1-27 *//*问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含一个数n,表示序列长度。第二行包含n个正整数,表示给定的序列。第三个包原创 2022-01-27 17:06:02 · 142 阅读 · 0 评论 -
蓝桥杯——算法训练——拿金币
只能通过90%,可以通过滚动数组来优化,目前还没想出来(@_@;)代码如下:package com.study.蓝桥杯.算法训练;import java.util.Scanner;/** * @author sjn * @date 2022-1-19 *//*问题描述 有一个N x N的方格,每一个格子都有一些金币,只要站在格子里就能拿到里面的金币。你站在最左上角的格子里,每次可以从一个格子走到它右边或下边的格子里。请问如何走才能拿到最多的金币。输入格式 第一行输..原创 2022-01-26 14:49:56 · 151 阅读 · 0 评论 -
蓝桥杯——算法训练——印章
一开始入手,我打算用概率论的知识解决印章问题,但是发现我的公式推导,适应有一定的局限性package com.study.蓝桥杯.算法训练;/*问题描述 共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率。输入格式 一行两个正整数n和m输出格式 一个实数P表示答案,保留4位小数。 *//** * @author sjn * @date 2022-1-15 */import java.util.Scanner;public c原创 2022-01-19 17:08:46 · 776 阅读 · 0 评论 -
排序算法(Java实现)
一、冒泡排序package com.study.数据结构.排序算法;/** * @author sjn * @date 2022-1-15 */import java.util.Arrays;public class BubbleSort { public static void main(String[] args) { int[] sort = {1, 5, 6, 3, 9, 4, 5}; System.out.println(Arrays原创 2022-01-16 16:29:03 · 116 阅读 · 1 评论