![](https://img-blog.csdnimg.cn/f37c207eb4504e1db40dadcba454a9e9.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法题
争取每天一道算法题,从基础开始,逐渐加大难度,希望每个看到的小伙伴可以不吝赐教,我定会仔细思考并感激于您。
JJpZh
算法,java,php,tp5,tp6,html,css,vue,js,jq,mysql
展开
-
简单聊几个算法的应用场景
只提供大概思路,具体实现还得去搜别人的1.发红包算法线段切割10块的红包分成5份,那就在10块中找4个随机数把它分成5份就行了。二倍均值法设剩余红包金额为 m 元,剩余人数为 n那么每次随机的区间是[0.01, m/n ×2−0.01]就好了。缺点:公平过头了,除了最后一次,前面不可能抽到巨额红包。2.A星寻路算法要从绿到红。给每个格子定义一些东西:有了这些属性就好办了,从起点开始,把他周围的都标记一下,下一步走F最小的那个,然后接着重复操作,最后直到发现终点为OpenList然后往原创 2022-01-11 22:48:14 · 2384 阅读 · 0 评论 -
排序算法总结
前言为本人自己的博客,不具备任何权威性,仅供参考,随着学习深入还会修改。排序的稳定性,主要看相同元素会不会被调换顺序。一、冒泡排序O(N^2)冒泡排序是最简单的排序了,就是从前往后两个两个相比较,然后看是否交换,每一轮操作下来,最后面的数就会是最大或者最小的了最简单的代码public static void sort(int array[]){ for(int i = 0; i < array.length - 1; i++) { for(int j ..原创 2022-01-11 22:06:35 · 454 阅读 · 0 评论 -
求最大公约数(java)
最大公约数提示:几个整数中公有的约数,叫做这几个数的公约数;其中最大的一个,叫做这几个数的最大公约数提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录最大公约数前言一、暴力遍历法二、国外古代的辗转相除法我国古代的更相减损术更相减损plus总结前言一共有4种性能不断提高的代码如下:一、暴力遍历法示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。public static int getGreatestCommonDivisor原创 2022-01-05 21:09:38 · 938 阅读 · 0 评论 -
最小覆盖字串(滑动窗口)
题解:class Solution { public String minWindow(String s, String t) { if (s == null || s == "" || t == null || t == "" || s.length() < t.length()) { return ""; } //维护两个数组,记录已有字符串指定字符的出现次数,和目标字符串指定字符的出现次数 //A.原创 2021-12-26 18:04:16 · 94 阅读 · 0 评论 -
求数组中的第K个最大元素【快速排序,堆排序】
灵魂拷问:一.解法的优化二.堆排序和快速排序的适用场景原创 2021-12-21 01:18:50 · 129 阅读 · 0 评论 -
ccf--202006-1--线性分类器--java
自定义类原创 2021-12-04 22:47:34 · 310 阅读 · 0 评论 -
简述Fisher-Yates 洗牌算法(随机重组数组)
简单来说 Fisher–Yates shuffle算法是一个用来将一个有限集合生成一个随机排列的算法(数组随机排序)。这个算法生成的随机排列是等概率的。同时这个算法非常高效。下面是动图演示:具体的数学求证放最下面了,毕竟我数学不好,看看就行了。下面补充一道力扣的相关题:384. 打乱数组给你一个整数数组 nums ,设计算法来打乱一个没有重复元素的数组。实现 Solution class:Solution(int[] nums) 使用整数数组 nums 初始化对象 int[] rese.转载 2021-11-22 23:30:09 · 325 阅读 · 0 评论 -
java数组字符串常用方法总结
1.数组1.1数组的定义//三种定义方式int[] arrs=new int[100];String[] names=new String[]{"张三","李四"};char[] chars={'a','b'};1.2Arrays工具类Arrays.sort(arr);//排序int index=Arrays.binarySearch(arr,3);//二分法查找数字3的下标int[] copied=Arrays.copyOfRange(arr,1,7);//拷贝下标从1到6的数组元素原创 2021-11-13 14:51:19 · 7579 阅读 · 2 评论 -
Java日期问题
问题描述2020 年 7 月 1 日是中国共产党成立 99 周年纪念日。中国共产党成立于 1921 年 7 月 23 日。请问从 1921 年 7 月 23 日中午 12 时到 2020 年 7 月 1 日中午 12 时一共包含多少分钟?import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public clas原创 2021-11-11 11:43:12 · 503 阅读 · 0 评论 -
(大数字计算)一个9位数的8次方的结果再对一个9位数取模(取余数)运算
(大数字计算)一个9位数的8次方的结果再对一个9位数取模(取余数)运算前几天写过一篇文章关于这个主题的:java超越int的存在----BigInteger可是,无助的我发现,那种BIG类型的数据其实很不好用,有时候需要循环相加的时候就糟糕了。标题这个问题是我从一个题目中提取出来的,那个题最大要求的是计算100000000次题目那个东西,并相加起来。单从题目来说,我一下就想到了我刚学到的Biginner,BigInteger pow(int exponent) 返回当前大整数的exponent次方原创 2021-11-03 21:35:03 · 263 阅读 · 0 评论 -
java全排列通用代码
public class Main { public static void main(String[] args) { perm(new int[]{1,2,3},0,2); } public static void perm(int[] array,int start,int end) { if(start==end) { System.out.println(Arrays.toString(array));原创 2021-11-02 22:50:14 · 446 阅读 · 0 评论 -
java超越int的存在----BigInteger
做题的时候遇到了个21位的数字,要对它进行%运算。人麻了,long 都不行。解决方案: BigInteger a=new BigInteger("651764141421415346185"); BigInteger b=new BigInteger("9"); BigInteger c=a.mod(b); System.out.println(c);BigInteger abs() 返回大整数的绝对值BigInteger add(B原创 2021-11-02 16:37:48 · 135 阅读 · 0 评论 -
java之位运算符在算法中的简单应用(附算法题:只出现一次的数字)
位运算符有&按位与如果两个相应的二进制位都为1,则该位的结果值为1,否则为0|按位或两个相应的二进制位中只要有一个为1,该位的结果值为1^按位异或若参加运算的两个二进制位值相同则为0,否则为1~取反~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1<<左移用来将一个数的各二进制位全部左移N位,右补0>>右移将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数, 高位补0(正数)或1(负数)>>>原创 2021-10-30 23:33:22 · 135 阅读 · 0 评论 -
【滑动窗口】java求无重复字符的最长字串(4种方法)
的的撒原创 2021-10-26 23:53:59 · 1564 阅读 · 0 评论 -
java关于逆置的一些代码
public void reverse(int[] nums,int start,int end){ while(start<end)){ int temp=nums[start]; nums[start]=nums[end]; nums[end]=temp; start++; end--; } }原创 2021-10-21 16:48:32 · 324 阅读 · 0 评论 -
csp之数列分段201509-1
试题编号: 201509-1试题名称: 数列分段时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?输入格式 输入的第一行包含一个整数n,表示数列中整数的个数。 第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。输出格式 输出一个整数,表示给定的数列有多个段。样例输入88 8 8 0 12 12 8 0样例输出5样例说明 8 8原创 2021-10-06 23:33:28 · 159 阅读 · 0 评论 -
csp每日一练之图像旋转201503-1
试题编号: 201503-1试题名称: 图像旋转时间限制: 5.0s内存限制: 256.0MB问题描述: 问题描述 旋转是图像处理的基本操作,在这个问题中,你需要将一个图像逆时针旋转90度。 计算机中的图像表示可以用一个矩阵来表示,为了旋转一个图像,只需要将对应的矩阵旋转即可。输入格式 输入的第一行包含两个整数n, m,分别表示图像矩阵的行数和列数。 接下来n行每行包含m个整数,表示输入的图像。输出格式 输出m行,每行包含n个整数,表示原始矩阵逆时针旋转90度后的矩阵。样原创 2021-10-06 13:16:25 · 171 阅读 · 0 评论 -
csp每日一练之门禁系统201412-1
试题编号: 201412-1试题名称: 门禁系统时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 涛涛最近要负责图书馆的管理工作,需要记录下每天读者的到访情况。每位读者有一个编号,每条记录用读者的编号来表示。给出读者的来访记录,请问每一条记录中的读者是第几次出现。输入格式 输入的第一行包含一个整数n,表示涛涛的记录条数。 第二行包含n个整数,依次表示涛涛的记录中每位读者的编号。输出格式 输出一行,包含n个整数,由空格分隔,依次表示每条记录中的读者编号是第几次出原创 2021-10-05 23:25:43 · 162 阅读 · 0 评论 -
csp每日一练之相反数201403-1
试题编号: 201403-1试题名称: 相反数时间限制: 1.0s内存限制: 256.0MB问题描述: 问题描述 有 N 个非零且各不相同的整数。请你编一个程序求出它们中有多少对相反数(a 和 -a 为一对相反数)。输入格式 第一行包含一个正整数 N。(1 ≤ N ≤ 500)。 第二行为 N 个用单个空格隔开的非零整数,每个数的绝对值不超过1000,保证这些整数各不相同。输出格式 只输出一个整数,即这 N 个数中包含多少对相反数。样例输入51 2 3 -1 -2样例输原创 2021-10-04 12:30:23 · 64 阅读 · 0 评论 -
csp每日一练之数组推导202109-1
问题描述试题编号: 202109-1试题名称: 数组推导时间限制: 1.0s内存限制: 512.0MB题目描述A1到An 是一个由 n 个自然数(即非负整数)组成的数组。在此基础上,我们用数组 B1到Bn 表示 A 的前缀最大值。如上所示,Bi 定义为数组 A中前 i 个数的最大值。根据该定义易知A1=B1 ,且随着 i 的增大,Bi 单调不降。此外,我们用 sum 表示数组 A 中 n个数的总和。现已知数组 B,我们想要根据 B 的值来反推数组 A。显然,对于给定的 B,A 的原创 2021-10-01 08:00:00 · 616 阅读 · 2 评论 -
csp每日一练之出现次数最多的数
试题编号: 201312-1试题名称: 出现次数最多的数时间限制: 1.0s内存限制: 256.0MB问题描述: 给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数。 输入的第二行有n个整数s1, s2, …, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n)。相邻的数用空格分隔。输出格式 输出这n个次数中出现次数最多的数。如果这样的数有多个,输出其中原创 2021-09-30 13:10:40 · 301 阅读 · 0 评论