java算法,应用题
文章平均质量分 59
初级学习和一些算法练习题
洛祁枫
一个不会写java代码的java程序员
展开
-
JAVA 力扣练习题:回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true;否则,返回 false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。原创 2022-08-30 14:52:36 · 1345 阅读 · 0 评论 -
Java版本:给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积
给你一个整型数组 nums ,在数组中找出由三个数组成的最大乘积,并输出这个乘积分析思路解题方法分析三个数组成的最大乘积:则只需要找到绝对值较大的数做乘法,分析得到的结果即可如果数组中全是非负数,则排序后最大的三个数相乘即为最大乘积;如果全是非正数,则最大的三个数相乘同样也为最大乘积。如果数组中有正数有负数,则最大乘积既可能是三个最大正数的乘积,也可能是两个最小负数(即绝对值最大)与最大正数的乘积。思路想要找到符合的数字,则有两种:Java自带的数组排序线性扫描解题方法排序法原创 2022-01-04 16:40:22 · 993 阅读 · 0 评论 -
JAVA EE比较完整的注册界面,前端实现数据校验篇(第一篇,前端)
JAVA EE比较完整的注册界面,前端实现数据校验项目资料,注册页面完整的代码结合CSS和jQuery实现一个完整的注册前端页面,拥有数据校验功能,先上图看看效果:在没有任何输入的情况下,不允许提交,并且要提示该项不能为空同时也需要校验,用户是否输入了密码,两次密码是否一致,是否输入了正确的邮箱格式代码片段:首先要在HTML中的标签中,引入所需要的文件,就是我们的CSS文件和JQuery文件<!-- 自己编写的CSS文件 --> <link rel="stylesh原创 2020-06-18 10:56:33 · 863 阅读 · 0 评论 -
JAVA版本:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
题:假设我们的环境只能存储得下 32 位的有符号整数,给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。分析:当数字进行反转的时候,就容易出现数据溢出的可能假如,13145不会出现溢出异常,但是54131就会出现溢出的可能则,需要判断的是,数据是否会溢出。而32位,正好是int数据,则,每次翻转的数据只要在int范围内则可以。 public static void main(原创 2020-06-08 21:01:06 · 2786 阅读 · 3 评论 -
JAVA版本: 实现简单链表,并给定两个非空链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,每个节点只能存储 一位 数字。实现方法将这两个数相加起来,并返回一个新的链
题目:实现简单链表,并给定两个非空链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,每个节点只能存储 一位 数字。实现方法将这两个数相加起来,并返回一个新的链表来表示它们的和。import jdk.nashorn.internal.ir.IndexNode;import java.util.LinkedList;import java.util.List;public class LeetCode_1 { public static void main(Str原创 2020-06-04 11:12:24 · 560 阅读 · 0 评论 -
JAVA版本:使用二分法查找数组中的数据
使用二分法查找数组中的数据:分析:二分法查找适用于数据量较大时,但是数据需要先排好顺序。主要思想是:(设查找的数组区间为array[low, high])(1)确定该区间的中间位置K(2)将查找的值T与array[k]比较。若相等,查找成功返回此位置;否则确定新的查找区域,继续二分查找。时间复杂度1.最坏情况查找最后一个元素(或者第一个元素)Master定理T(n)=T(n/2)+O(1)所以T(n)=O(log2n)2.最好情况查找中间元素O(1)查找的元素即为中间元素(奇数长度数列的正中间,原创 2020-06-02 19:59:58 · 1409 阅读 · 0 评论 -
JAVA版本,线程四:线程实现卖票程序(加锁,线程数据有顺序,安全顺序)
PS.名字什么的不重要,改成了糖果,效果是一样的。不考虑顺序的卖票线程程序,线程不安全模式将票改成了糖果:public class CandyDemo { public static void main(String[] args) throws IOException { //读取配置文件:.properties Properties p = new Properties(); //使用配置文件,可以随时修改配置文件从而改变数据传输原创 2020-05-29 15:37:58 · 268 阅读 · 0 评论 -
JAVA版本,线程三:线程实现卖票程序
PS.名字什么的不重要,改成了糖果,效果是一样的。不考虑顺序的卖票线程程序,线程不安全模式将票改成了糖果:/*线程加强:让四个小朋友跑步抢一百颗糖,一次只能拿一颗,先跑到了就拿到糖,然后重新开始跑。(PS:糖吃多了会长虫牙) */package cn.tedu.thread;public class CandyDemo { public static void main(String[] args) { //将糖的数量定下来,创建代表糖的类 Candy原创 2020-05-29 14:14:31 · 365 阅读 · 0 评论 -
JAVA版线程基础案例二:实现Runnable完成线程
实现Runnable完成线程,这样的好处是灵活,因为可以继承其他类同时也要重写run()方法来描述线程的任务信息,由新的类的 对象来构建Thread类的对象,调用strat方法来开启线程(这种方式常用)线程竞争关系图:public static void main(String[] args) { RDemo r=new RDemo("111"); //由于没有继承Threa类,所以没有start()方法来启动线程 //所以需要创建线程对原创 2020-05-29 11:00:15 · 409 阅读 · 0 评论 -
JAVA版,线程初级入门案例一:继承Thread类创建线程
进程:计算机需要执行多个程序,所以需要分成多个小任务,每一个就是一个进程线程:进程可以分为多个可执行的小任务,每一个就是一个线程计算机上的任务是由CPU来执行的,在某个时间点,某个核中只能执行一个进程。而进程是由线程组成,所以同一时刻CPU只能执行某个线程多线程:线程的工作职责分为和CPU交互或者和硬件交互,当线程和硬件交互时,CPU处于空闲状态,多线程则可以提高CPU的利用率(理论上最好状态是100%)创建多线程方式:继承Thread类线程竞争图://main方法是主线程,原创 2020-05-29 10:36:23 · 346 阅读 · 0 评论 -
JAVA版本:给定一个字符串,返回字符串中小写英文字母的个数、数字个数以及其他字符的个数
给定一个字符串,返回字符串中小写英文字母的个数、数字个数以及其他字符的个数方法分析:使用replaceAll()方法,逐一删除字符串中的相关数据,类型个数=原长度-新长度public static void main(String[] args) { String str ="右上角求关注dkKAHDSFjfoiDSGfdgf356321wsafku"; Coun_St(str); }//给定一个字符串,返回字符串中小写英文字母的个数、数字个数以及其他字符的个数原创 2020-05-28 17:28:08 · 1151 阅读 · 0 评论 -
JAVA版本:使用字节流完成文件的复制
使用字节流完成文件的复制计算机按照二进制进行存储,无论你存储的是什么数据,底层都是二进制的数据流,一般读取文件可以按照字符流和字节流两种方式读取,读取文件之后通过相应的编码软件进行解码,就能变成不同的文件。我们对数据的操作也只是对底层数据的改变进行操作,使用字节流来拷贝文件,能让我们跟容易理解底层数据的迁移方式。其实我只是觉得自己代码的迁移比系统自带的拷贝更加的快。so,直接看代码: public static void main(String[] args) throws IOException原创 2020-05-26 20:00:49 · 853 阅读 · 0 评论 -
JAVA版本:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。题目分析:每次累加的都是a的n连,所以要获取每一次相加的数值获取值的方法:m=m+a;a=a*10;public static void main(String[] args) { Scanner scanner=new Scanner(System.in); System.out.println("请输入你要计原创 2020-05-21 16:09:46 · 3633 阅读 · 0 评论 -
JAVA版本:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。题目分析:统计某一种类型的数量的时候,只要将特定的类型重字符中取出,用原来的长度-剩下的长度=某个特定类型的数量。而正则表达式能很快的取出其中的指定类型。 public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入需要分类的字符串:"); //获原创 2020-05-21 15:35:28 · 5584 阅读 · 0 评论 -
JAVA版本:输入两个正整数m和n,求其最大公约数和最小公倍数。
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。题目分析:要求两个数的最大公约数,最方便的逻辑就是辗转相除法1.用两个原数中最大的数,除以最小的数,如果余数不为零,则在两个原数和余数之间选择两个最小的数。2.重复上面的步骤,直到余数为零的时候,最小除数为两个原数的最大公约数求两个数的最小公倍数,两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即(a,b)×[a,b]=a×b。所以,求两个数的最小公倍数,就可以先求出它们的最大公约数,然后用上述公式求出它们的最小公倍数。publi原创 2020-05-21 10:51:17 · 3275 阅读 · 0 评论 -
java版本:将一个正整数分解质因数。
java版本:将一个正整数分解质因数。题目:将一个正整数分解质因数。题目分析:正整数能分解质因数,则该数不是一个素数,列如:50=2x5x5;程序输出应该为50=255;程序分析:对数字number进行分解质因数,应先分析该数是否是一个质数,如果不是,先找到一个最小的质数:(1)如果这个质数恰等于number,则说明分解质因数的过程已经结束,打印出即可。(2)如果number还能被比它小且大于1的整数整除,则需要寻找下一个最小质数,把number的与最小因数的商作为number,继续寻找。(3原创 2020-05-21 09:47:34 · 989 阅读 · 0 评论 -
JAVA版本:打印出所有3位数的 水仙花数
题目:打印出所有3位数的"水仙花数"题目分析:所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。 例如:371是一个"水仙花数",因为371=3的三次方+7的三次方+1的三次方。程序分析:只要每次获取一个数,然后依次得到数的个位,十位,百位,然后判断是否符合水仙花数的条件 符合,则为水仙花数,不符合,则不是。public static void main(String[] args) { //声明是三个 变量,用来存放三位数的三个位子上的值 .原创 2020-05-20 20:34:30 · 1563 阅读 · 0 评论 -
JAVA版本:判断101-200之间有多少个素数,并输出所有素数。
题目:判断101-200之间有多少个素数,并输出所有素数。程序分析:判断素数的方法:用一个数分别去除2到这个数,如果至少有一个数能被整除,则表明此数不是素数,反之是素数。 则只需要取出101-200之间所有的数,分别模2到他自己本身,没有余数为零的结果,则为素数 public static void main(String[] args) { int count=0; //用于统计素数的个数 //一次取数,进行运算 for (int i = 101; i.原创 2020-05-20 20:16:17 · 11285 阅读 · 4 评论 -
java版本,有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一 对兔子,假如兔子都不死,问每个月的兔子总数为多少?
题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?题目分析:兔子的规律为数列1,1,2,3,5,8,13,21....看到这个数列,是否想起了斐波那契数列算法,从第三位数开始,遍可以套用公式。公式为:Sn=S(n-1)+S(-2)public static void main(String[] args) { //在main()方法中调用TUzi方法,并传入月份。 Tuzi(10);}原创 2020-05-20 19:49:40 · 10037 阅读 · 0 评论