算法--Java

【JAVA算法】图论算法 -- Dijkstra算法 写在前面:    我也是一名java语言的爱好者,仅以此文作为学习的记录,对于文中出现的代码规范,代码格式,算法效率等问题,希望各路大神不吝赐教,在下感激不尽。同是学习的同学也同样希望互相交流,取长补短。                                                                                                  ... 阅读详情

斐波那契数列

  斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)。

  输入一个整型参数,输出对应个数的斐波那契数列。如输入5,输出1、1、2、3、5。

private static void fibonacci(int length) {
    int[] arr = new int[length];
    for (int i = 0; i < length; i++) {
        if (i == 0 || i == 1) {
            arr[i] = 1;
        }else {
            arr[i] = arr[i-1] + arr[i-2];
        }
        System.out.print(arr[i] + " ");
    }
}

吸血鬼数字

  吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得,而这对数字各包含乘积的一半位数的数字,其中从最初的数字中选取的数字可以任意排序。 以两个0结尾的数字是不允许的。 例如,下面数字都是吸血鬼数字:

1260 = 21 * 60  
1827 = 21 * 87
2187 = 27 * 81

写一个程序,找出4位数的所有吸血鬼数字。

private static void vampire() {
    String[] strProduct = null, strStart;
    int count = 0;//查询了多少次
    int sum = 0;//查到了几组符合条件的
    for (int i = 10; i < 100; i++) {
        for (int j = i+1; j < 100; j++) {
            int product = i * j;
            if (product < 1000 || product > 9999) {
                continue;
            }
            count++;
            String[] strP = String.valueOf(product).split("");
            String[] strS = (String.valueOf(i)+String.valueOf(j)).split("");
            Arrays.sort(strP);
            Arrays.sort(strS);
            if (Arrays.equals(strP, strS)) {
                sum++;
                System.out.println(i + "*" + j + "=" + product);
            }
        }
    }
    System.out.println("循环了"+ count + "次");
    System.out.println("共查到了" + sum + "组吸血鬼数字");
}

结果是:

15*93=1395
21*60=1260
21*87=1827
27*81=2187
30*51=1530
35*41=1435
80*86=6880
循环了3271次
共查到了7组吸血鬼数字

《Thinking in Java》官方答案

private static void vampire() {
    int[] startDigit = new int[4];
    int[] productDigit = new int[4];
    int queryCount = 0;//查询了多少次
    int sum = 0;//查到了几组符合条件的
    for (int num1 = 10; num1 <= 99; num1++) {
        for (int num2 = num1; num2 <= 99; num2++) {
            //如果x*y是吸血鬼数字,那应该满足(x * y) % 9 == (x + y) % 9
            if ((num1 * num2) % 9 != (num1 + num2) % 9)
                continue;
            queryCount++;
            int product = num1 * num2;
            startDigit[0] = num1 / 10;
            startDigit[1] = num1 % 10;
            startDigit[2] = num2 / 10;
            startDigit[3] = num2 % 10;
            productDigit[0] = product / 1000;
            productDigit[1] = (product % 1000) / 100;
            productDigit[2] = product % 1000 % 100 / 10;
            productDigit[3] = product % 1000 % 100 % 10;
            int count = 0;
            for (int x = 0; x < 4; x++){
                for (int y = 0; y < 4; y++) {
                    if (productDigit[x] == startDigit[y]) {
                        count++;
                        productDigit[x] = -1;
                        startDigit[y] = -2;
                        if (count == 4){//4个数字要完全相同
                            sum++;
                            System.out.println(num1 + " * " + num2 + " : "+ product);
                        }
                    }
                }
            }
        }
    }
    System.out.println("循环了"+ queryCount + "次");
    System.out.println("共查到了" + sum + "组吸血鬼数字");
}

结果是:

15 * 93 : 1395
21 * 60 : 1260
21 * 87 : 1827
27 * 81 : 2187
30 * 51 : 1530
35 * 41 : 1435
80 * 86 : 6880
循环了310次
共查到了7组吸血鬼数字
Java语言的算法 算法是指解决某一特定问题的有限步骤和规则的有序集合。一个有效的算法通常具备以下特性:输入:算法必须有零个或多个输入量。输出:算法必须有一个或多个输出量。明确性:算法每一个步骤都必须是明确的,不应存在歧义。有限性:算法在执行过程中必须是有限步骤,最终会结束。有效性:算法中的操作应该是能够实际执行的。算法是计算机科学的核心,而Java语言以其清晰的语法和丰富的库支持成为实现各种算法的热门选择。通过本文的讲解,我们了解了排序算法、查找算法以及基本数据结构的实现。 阅读详情

相关推荐

Java算法题

在技术笔试中,算法题主要考察对基础数据结构(数组、链表、树、栈 / 队列、图)的掌握,以及经典算法思想(动态规划、贪心、查找排序、回溯)的应用。以下按分类,整理高频笔试算法题,包含题目描述、核心思路与代码实现(以 Java/Python 为主,兼顾可读性与效率)。

haogexiaole的博客 1236

java算法是什么_什么是java算法

什么是java算法算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,java算法就是采用Java语言来实现解决某一问题的清晰指令。算法的特征:输入性:有零个或多个外部量作为算法的输入输出性:算法产生至少一个量作为输出确定性:算法中每条指令清晰,无歧义有穷性:算法中每条指令的执行次数有限,执行每条指令是时间也有限可行性:算法原则上能够精确的运行,而且人们用纸和笔做有限次运算后即可完成程...

weixin_34355337的博客 4735

Java算法之余弦相似性算法

关于余弦相似性算法,大家可以看这篇文章:TF-IDF与余弦相似性的应用(二) 这篇文章是基于分词的,里面有关于分词的知识。 其重点在于余弦算法: 这个算法的场景是这样的: 如何从一系列的字符串列表中找出一个相似度最高的结果返回出来。 如果碰到这样的问题,就应该考虑余弦相似性算法。例如:在一个国家名的列表中,有china(中国)这个字符串,而输入端获得的是chino,最后一个字符不同。

道 3317

java算法大全_java经典算法_算法面试题大全含答案

1、Java中用到的线程调度算法是什么? 2、java二叉树算法面试题大全含答案 3、java笔试手写算法面试题大全含答案 4、java递归算法练习:使用递归算法写个程序计算n! 5、JVM的常见垃圾回收算法 6、《java算法大全》第一期 7、《java算法大全》第三期 8、《java算法大全》第二期 9、《java算法大全》第五期 10、《java算法大全》第四期 11、《java经典算法》之...

songfei_dream的专栏 1万+

水文地质人必备:用Origin Pro 2023手把手教你搞定Piper三线图(附数据模板)

本文详细介绍了如何使用Origin Pro 2023绘制专业级Piper三线图,适用于水文地质数据分析。从数据准备、百分比计算到图表参数设置,提供全流程指导,并附赠数据模板和样式预设文件,帮助用户快速掌握这一水文地球化学分析的核心工具。

weixin_30568591的博客 532

汽车软件工程师必看:ASPICE开发流程全解析(附各阶段交付物清单)

本文全面解析了汽车行业广泛采用的ASPICE开发流程,详细介绍了从需求挖掘到系统架构设计、软件工程及测试验证各阶段的关键操作和交付物清单。针对汽车软件工程师,提供了实用的协作指南和工具推荐,帮助团队提升开发效率并降低项目风险,是掌握ASPICE标准的必备指南。

weixin_30733003的博客 638

Java常用算法

Java常用算法 一、二分查找算法(非递归) 1、介绍 ​ 二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找。 ​ 二分查找法的运行时间为对数时间O(㏒₂n) ,即查找到需要的目标位置最多只需要㏒₂n 步,假设从[0,99]的 队列(100 个数,即 n=100)中寻到目标数 30,则需要查找步数为㏒₂100 , 即最多需要查找 7 次( 2^6 < 100 < 2^7) 步骤: 首先确定整个查找区间的中间位置 mid = ( left + right

weixin_45759791的博客 4110

在abaqus中利用point-based 来快捷定义螺栓连接

abaqus中可以通过point-based方式定义连接点的位置,并对连接方式进行定义,可以进行螺栓连接的模拟。 可以通过逐点输入坐标或导入外部的坐标位置 也可以通过阵列的方式定义点 定义完点后就利用create fasteners,选择point-based,选取刚才创建好的点阵列,然后定义连接的属性,如下图 定义connector section时,类型选择translator,相当于只有1方向可以动,定义弹性模量以及破坏准则。 案例操作 假如有两个板,通过...

fiber_tape的博客 7335

java 算法,Java的十大算法你掌握好了吗?

java的发展前景和就业前景这两点都是大家有目共睹的,从java问世以来地位都是没有收到任何的影响的。很多的时候大家想要进入到java这个行业的话都是要从最基础的开始学习的,今天粤嵌科技就来和大家说下java的十大算法。算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(nlogn) 次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事...

weixin_30596433的博客 1824

汇总药用数据库(Pubchem,bingdingDB,Chembl,ExcapeDB)数据

记载一下如何汇总4大数据库的数据

recher_He1107的博客 3391

BSW:MemMap模块配置及使用

(内存映射(MemMap)模块用于通过内存映射文件将代码和数据映射到特定的内存部分。MemMap生成特定的头文件,其中包含为MemorySection元素和编译器特定指令定义的内存映射预处理器。上面是比较官方的回答,说人话就是把数据和代码放在ECU内指定的地址。初级应用:软件中的bss,data,rodata,code,text,段需要在memory layout中划分具体的物理地址,对于多核系统,要将执行的数据和代码放在目标核的RAM和ROM。

Forever_Oct的博客 3673

Java语言常用的算法

分治算法是一种递归的算法思想,其基本思想是将一个大问题分解为若干个小问题,分别解决这些小问题,最后将小问题的解合并起来得到大问题的解。二分查找,也称为折半查找,它要求数据集合必须是有序的,它的基本思想是将数据集合分成两半,如果目标元素比中间元素小,就在前半部分继续查找,否则在后半部分继续查找,直到找到目标元素或数据集合为空。在实际应用中,分治算法也可以用来解决很多实际问题,比如在计算机图形学中,将一个大的图形对象分解成若干个小的三角形对象,每个小对象单独处理后再合并成一个大对象。

qq_45506362的博客 1万+

差分放大电路的计算

反馈,对于运算放大电路来说,运放工作在线性区,所以这里一定是负反馈,没有反馈(开环)或者是正反馈,那是比较器电路而不是放大电路,这时候运放工作在饱和区或称为非线性工作区,正因为饱和,输出才是电源电压的幅值。图2是一种带正反馈的运放电路,这里就不能叫运算放大电路了,因为运放的开环放大倍数理想是无限大,当然实际中不可能无限大,所以如下结构是迟滞电压比较器,运放工作在非线性区或饱和区。实际应用电路中,我们为了简化计算,也是用最简方法计算,经常使用的电路也是上述电路,令电阻相等关系,简化计算。

qq_40170041的博客 350

java是算法吗,java是算法吗?

java不是算法。Java是一门面向对象编程语言,是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,...

weixin_29163797的博客 650

人形机器人电源系统硬件开发:从原理图设计到PCB布局的完整流程

人形机器人是“移动的智能终端”,其电源系统如同“心脏+血管”:既要为大脑(主控)、肌肉(电机)、感官(传感器)提供稳定能量,又要在有限体积内应对高动态负载(如跳跃时电机瞬间大电流)。本文聚焦“硬件开发”维度,覆盖从需求分析到PCB制板的完整流程,适合硬件工程师、机器人爱好者快速掌握工程实战方法。

AI天才研究院 2172

【MATLAB】STM32电机调速闭环控制工程

本文提出了一种基于MATLAB仿真与STM32实现的直流电机闭环PID调速控制方案。通过MATLAB建立电机数学模型并进行参数整定,仿真验证了增量式PID算法在启停、稳态和抗扰动方面的优越性能。基于STM32F103搭建了硬件系统,实现了编码器测速、定时中断控制、PWM输出等功能。实测表明,该系统转速超调<2%、稳态误差±2r/min,具备快速响应和强抗扰能力。相比开环控制,闭环调速显著提升了动态性能和稳态精度。方案提供了完整的仿真代码和嵌入式工程源码,可直接应用于智能小车、工业传动等场景,具有较高的

unber的博客 49

【算法】Java实现RSA算法

RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它是目前最广泛使用的公钥加密算法之一。RSA算法是由三位密码学家(Ron Rivest、Adi Shamir、Leonard Adleman)在1977年提出的。RSA算法基于大数因子分解的数学难题,它使用一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。公钥可以公开分享给其他人,而私钥必须保密。选择两个不同的大素数p和q。计算n = p * q,n被称为模数(modulus)。

分享Java硬核干货 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Java算法之双指针算法

双指针算法是对Java算法的一种优化,往往是用来对O(N*N)算法进行优化的一种算法。常见的双指针算法应用如下快慢指针(寻找链表中点,寻找环形链表,滑动窗口),左右指针(反转数组,二分搜索),中间向两边扩散型双指针(回文数组),归并类双指针(合并链表)

m0_58046481的博客 971

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java算法篇-查找算法&字符串匹配算法&图论算法

本文主要围绕查找算法、字符串匹配算法、图论算法进行展开分析,主要内容为二分查找、线性查找、kmp算法、dijkstra算法...

leen的博客 1468

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Java语言的图算法

在计算机科学中,图是一种由顶点(Vertices)和边(Edges)组成的数学结构。图可以是有向的或无向的,有权的或无权的。无向图:边没有方向,即任意两个节点之间的连接是双向的。有向图:边有方向,即连接节点的方式是单向的。权重图:每条边都有一个权重,表示从一个节点到另一个节点的“成本”或“距离”。连通图:图中任意两个节点之间都有路径相连。树:一种特殊的无向图,是一个连通的无环图。本文详细探讨了Java语言中图的基本概念、表示方式及其常用图算法。

2501_91257680的博客 1462

Java 垃圾回收算法

垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序的结束,被保留的空间无法被其它对象使用,甚至可能导致内存溢出。

pig_boss的博客 1342

java查找算法

在java中,常用的查找有四种:1) 顺序(线性)查找2) 二分(折半)查找3) 插值查找4) 斐波那契查找

Good_Starry的博客 1457

java常用算法示例

说明:java常用算法示例 step1: 登录后复制 import java.util.ArrayList; import java.util.List; import java.util.ArrayList; import java.util.List; /* * 有 1、2、3、4 四个数字,能组成多少个互不相同...

cnzzs的博客 730
上一篇: Tinker使用
下一篇: 使用adb命令通过IP地址连接手机
Pioneer_Chang
博客等级 码龄11年 35粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值