JAVA算法100例_全源码

合集下载

java经典程序100例

java经典程序100例

2,给定一个百分制的分数,输出相应的等级。
90 分以上
A级
80~89
B级
70~79
C级
60~69
D级
60 分以下
E级
import java.util.Scanner; class Mark{
public static void main(String[] args){ System.out.println("请输入一个分数"); //定义输入的分数为“mark”,且分数会有小数 double mark; Scanner scanner = new Scanner(System.in); mark = scanner.nextDouble();
12、输入一个数据 n,计算斐波那契数列(Fibonacci)的第 n 个值 1 1 2 3 5 8 13 21 34 规律:一个数等于前两个数之和
//计算斐波那契数列(Fibonacci)的第 n 个值 public class Fibonacci{
public static void main(String args[]){ int n = Integer.parseInt(args[0]); int n1 = 1;//第一个数 int n2 = 1;//第二个数 int sum = 0;//和 if(n<=0){ System.out.println("参数错误!"); return;
3,编写程序求 1+3+5+7+……+99 的和值。
class he{ public static void main(String[] args){ int number = 1; //初始值 1,以后再+2 递增上去 int sum = 0; for ( ; number <100; number+=2 ){ sum += number; } System.out.println("1+3+5+7+……+99= " +sum); }

java经典程序100例

java经典程序100例
} }
11、计算圆周率 PI=4-4/3+4/5-4/7....... 打印出第一个大于 3.1415 小于 3.1416 的值
class Pi { public static void main(String[] args){ double pi =0; //定义初始值 double fenZi = 4; //分子为 4 double fenMu = 1; //第一个 4,可看作分母为 1 的分式,以后的分母每次递增 2 for (int i = 0; i < 1000000000; i++){ //运行老久,减少循环次数会快很多,只是精确
int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in); year = scanner.nextInt(); if (year<0||year>3000){
System.out.println("年份有误,程序退出!"); System.exit(0); } if ((year%4==0)&&(year%100!=0)||(year%400==0)) System.out.println(year+" is bissextile"); else System.out.println(year+" is not bissextile "); } }
12、输入一个数据 n,计算斐波那契数列(Fibonacci)的第 n 个值 1 1 2 3 5 8 13 21 34 规律:一个数等于前两个数之和
//计算斐波那契数列(Fibonacci)的第 n 个值 public class Fibonacci{

javadct_DCT(离散余弦变换)算法原理和源码

javadct_DCT(离散余弦变换)算法原理和源码

javadct_DCT(离散余弦变换)算法原理和源码离散余弦变换(Discrete Cosine Transform,简称DCT)是一种常用的信号处理技术,广泛应用于图像和音频压缩领域。

DCT将输入的离散信号转换为一组系数,这些系数代表了信号的频域特征。

在压缩领域中,DCT可将信号从时域转换为频域,通过舍弃一些高频系数实现信号的压缩。

DCT算法的原理基于傅里叶变换(Fourier Transform)的思想,将时域信号转换为频域信号。

然而,与傅里叶变换相比,DCT更适合处理实数信号,因为它只使用实数运算,而不需要复数运算。

DCT算法的一般步骤如下:1.将输入的离散信号分为若干个块,每个块包含N个采样点。

2.对每个块进行预处理,例如减去均值。

3.对每个块进行DCT变换。

4.根据需要舍弃一些高频系数。

5.对经过舍弃的系数进行逆DCT变换,恢复原始信号。

下面是一个简单的离散余弦变换的Python实现:```pythonimport numpy as npdef dct_transform(signal):N = len(signal)dct_coef = np.zeros(N)for k in range(N):sum = 0for n in range(N):sum += signal[n] * np.cos((np.pi/N)*(n+0.5)*k)dct_coef[k] = sumreturn dct_coefdef idct_transform(dct_coef):N = len(dct_coef)signal = np.zeros(N)for n in range(N):sum = 0for k in range(N):sum += dct_coef[k] * np.cos((np.pi/N)*(n+0.5)*k)signal[n] = sum / Nreturn signal```以上是一个简单的DCT变换和逆变换的实现,其中`dct_transform`函数接受输入信号并返回DCT系数,`idct_transform`函数接受DCT系数并返回恢复的原始信号。

java基础代码大全

java基础代码大全

/*1. 打印:--------------------------------------------------2. 求两个浮点数之商。

3. 对一个数四舍五入取整。

4. 判断一个数是否为奇数5. 求一个数的绝对值。

6. 求两个数的最大值。

7. 求三个数的最大值。

8. 求1-n之和。

9. 求1-n中的奇数之和。

10. 打印自2012年起,n年内的所有闰年。

11. 打印n行星号组成的等腰三角形。

12. 求两个正整数的最小公倍数。

13. 判断一个数是否为质数。

14. 求两个正整数的最大公约数。

15. 求一个正整数n以内的质数。

16. 求一个正整数n以内的质数。

17. 分别利用递推算法和递归算法求n! 。

*/class A{static void f(){System.out.println("----------------------");//1.打印:-----------}static double quzheng(double a){int b;System.out.println((b=(int)(a+0.5)));//2.求两个浮点数之商。

return(b);}static double qiushang(double a,double b){ //3.对一个数四舍五入取整System.out.println((a/b));return(a/b);}static boolean odd(int c){ //4.判断一个数是否为奇数if(c%2==0){return(false);}else{return(true);}}static int juedui(int d){ //5.求一个数的绝对值。

if(d<0){d=0-d;System.out.println(d);else{d=d;System.out.println(d);}return(d);}static int max(int e,int f){ //6.求两个数的最大值。

简单java程序编程例子

简单java程序编程例子

简单java程序编程例子
以下是 8 条关于简单 Java 程序编程例子的内容:
1. 嘿,你知道吗?打印出一句话就很简单呢!就像这样:`("Hello World!");` 想象一下,电脑屏幕上出现了你让它说的话,是不是很神奇呀?
2. 哇哦,计算两个数的和也不难呀!比如 int a = 5, int b = 10; 然后 int sum = a + b; 这就求出结果啦,就像我们生活中做加法一样轻松呢!
3. 诶呀,判断一个数是奇数还是偶数也挺有趣呢!用 if 语句就可以啦,比如 int num = 7; if (num % 2 == 0) {...} else {...},是不是很有意思呀?
4. 嘿,还可以通过循环来重复做一些事情哦!像 for 循环,比如说要打印 5 次“我爱Java”,for (int i = 0; i < 5; i++) { ("我爱 Java"); } 这不就实现啦,感觉好酷呀!
5. 哈,创建一个数组来存储多个值也不难哟!int[] array = {1, 2, 3, 4, 5}; 然后可以通过索引来访问每个元素,就像找到藏在里面的宝贝一样呢!
6. 哇噻,实现一个简单的猜数字游戏也超好玩呢!电脑心里想一个数字,你来猜,然后它告诉你大了还是小了,这就跟和朋友玩游戏一样刺激呀!
7. 呀,创建一个类和对象也很重要呢!比如定义一个学生类,然后创建一个学生对象来表示具体的一个学生,这就像是给每个学生都造了一个专属模型一样呢!
8. 嘿嘿,用 Java 来解决一些实际问题,那才叫厉害呢!比如计算购物车的总价,或者统计一篇文章里某个单词出现的次数,这多有成就感呀!
结论:Java 编程有很多有趣又实用的例子呢,只要你去尝试,就能发现其中的乐趣和魅力!。

java算法大全

java算法大全

java算法大全
Java算法大全可以包含许多不同的算法,包括排序算法、搜索算法、图算法等等。

下面是一些常见和常用的Java算法示例:
1. 排序算法:
- 冒泡排序
- 插入排序
- 选择排序
- 快速排序
- 归并排序
- 堆排序
2. 搜索算法:
- 二分查找
- 广度优先搜索(BFS)
- 深度优先搜索(DFS)
3. 图算法:
- 最短路径算法(如Dijkstra算法、Floyd-Warshall算法)
- 最小生成树算法(如Prim算法、Kruskal算法)
- 拓扑排序算法
4. 动态规划算法:
- 背包问题
- 最长上升子序列(LIS)问题
- 最长公共子序列(LCS)问题
5. 字符串算法:
- 字符串匹配(如暴力匹配、KMP算法、Boyer-Moore
算法)
- 字符串排序(如基数排序)
6. 数值算法:
- 求解线性方程组
- 求解方程的根
- 求解数值积分
以上只是一些常见的算法示例,Java算法的范围非常广泛,涉及到各种不同的问题和应用领域。

如果你有特定的算法
需求,可以提供更具体的问题描述,我可以为你提供更详
细的解答。

java编程100例

java编程100例
System.out.println("第2个数比第1个数小!");
}
//for循环操作
for(int i=0;i<iEnd;i++)
{
System.out.println("这是for 第"+i+"次循环");
}
//while循环操作
}
}
[JAVA100例]004、矢量(Vector)对象的操作
public class operateVector
{
/*
*<br>方法说明:生成一个4*4的二维Vector,供使用。
*<br>输入参数:
*<br>输出变量:Vector
*<br>其它说明:
*/
public Vector buildVector(){
//演示是否是英文字符
boolean bIsStr = mA.isString("wer");
System.out.println("1:bIsStr="+bIsStr);
bIsStr = mA.isString("wer3");
System.out.println("2:bIsStr="+bIsStr);
for(int j=0;j<cStr.length;j++){
if(cTemp==cStr[j]){
bTemp = true;
break;
}
}
if(!bTemp) return false;
}
return 0;

JAVA算术题40道

JAVA算术题40道

题目:古典‎问题:有一‎对兔子,从‎出生后第3‎个月起每个‎月都生一对‎兔子,小兔‎子长到第四‎个月后每个‎月又生一对‎兔子,假如‎兔子都不死‎,问每个月‎的兔子总数‎为多少?‎1.‎程序分析:‎兔子‎的规律为数‎列1,1,‎2,3,5‎,8,13‎,21..‎.. ‎publ‎i c cl‎a ss e‎x p2{‎publ‎i c st‎a tic ‎v oid ‎m ain(‎S trin‎g arg‎s[]){‎in‎t i=0‎;f‎o r(i=‎1;i<=‎20;i+‎+)‎Syst‎e m.ou‎t.pri‎n tln(‎f(i))‎;}‎publ‎i c st‎a tic ‎i nt f‎(int ‎x){‎if‎(x==1‎|| x‎==2)‎re‎t urn ‎1;‎e lse‎re‎t urn ‎f(x-1‎)+f(x‎-2);‎}}‎或pub‎l ic c‎l ass ‎e xp2{‎pub‎l ic s‎t atic‎void‎main‎(Stri‎n g ar‎g s[])‎{i‎n t i=‎0;‎m ath ‎m ymat‎h = n‎e w ma‎t h();‎fo‎r(i=1‎;i<=2‎0;i++‎)‎S yste‎m.out‎.prin‎t ln(m‎y math‎.f(i)‎);}‎}c‎l ass ‎m ath‎{pu‎b lic ‎i nt f‎(int ‎x){‎if‎(x==1‎|| x‎==2)‎re‎t urn ‎1;‎e lse‎re‎t urn ‎f(x-1‎)+f(x‎-2);‎}}‎【程序2‎】题‎目:判断1‎01-20‎0之间有多‎少个素数,‎并输出所有‎素数。

‎1.程‎序分析:判‎断素数的方‎法:用一个‎数分别去除‎2到sqr‎t(这个数‎),如果能‎被整除,‎则表‎明此数不是‎素数,反之‎是素数。

‎pu‎b lic ‎c lass‎exp2‎{pu‎b lic ‎s tati‎c voi‎d mai‎n(Str‎i ng a‎r gs[]‎){‎i nt i‎=0;‎math‎myma‎t h = ‎n ew m‎a th()‎;f‎o r(i=‎2;i<=‎200;i‎++)‎if(‎m ymat‎h.isz‎h ishu‎(i)==‎t rue)‎S‎y stem‎.out.‎p rint‎l n(i)‎;}‎}cla‎s s ma‎t h{‎publ‎i c in‎t f(i‎n t x)‎{‎if(x‎==1 |‎| x==‎2)‎retu‎r n 1;‎el‎s e‎retu‎r n f(‎x-1)+‎f(x-2‎);}‎pub‎l ic b‎o olea‎n isz‎h ishu‎(int ‎x){‎fo‎r(int‎i=2;‎i<=x/‎2;i++‎)‎i f (x‎% 2=‎=0 )‎r‎e turn‎fals‎e;‎r etur‎n tru‎e;}‎}【‎程序3】‎题目:‎打印出所有‎的 "水仙‎花数 ",‎所谓 "水‎仙花数 "‎是指一个三‎位数,其各‎位数字立方‎和等于该数‎本身。

DES算法Java实现源代码

DES算法Java实现源代码
*结果为32位数据组f(R0,K1),
*b)第二轮加密迭代:左半边输入L1=R0,右半边输入R1=L0⊕f(R0,K1),由轮函数f实现子密钥
*K2对R1的加密,结果为32位数据组f(R1,K2),f(R1,K2)与L1模2相加,得到一个32为数据组L1⊕f(R1,K2).
*c)第3到16轮迭代分别用密钥K3,K4……K16进行。4.再经过逆初始置换IP-1,将数据打乱重排,生成64位密文。
{ 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6 },
{ 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 } },
{ // S_Box[7]
{ 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1 },
package des;
/**
*加密过程:
* 1.初始置换IP:将明文顺序打乱重新排列,置换输出为64位。
* 2.将置换输出的64位明文分成左右凉拌,左一半为L0,右一半称为R0,各32位。
*3。计算函数的16轮迭代。
*a)第一轮加密迭代:左半边输入L0,右半边输入R0:由轮函数f实现子密钥K1对R0的加密,
{ 13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6 },
{ 1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2 },
{ 6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12 } },
10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20,

java算法面试经典100题

java算法面试经典100题

java算法面试经典100题
很抱歉,我不能提供整个的Java算法面试经典100题,但是我可以提供一些常见的算法题目,供你参考:
1. 两数之和:给定一个整数数组nums和一个目标值target,在数组中找到和为目标值的两个整数,并返回它们的索引。

2. 无重复字符的最长子串:给定一个字符串,请找出其中不含有重复字符的最长子串的长度。

3. 盛最多水的容器:给定n个非负整数a1,a2,...,an,其中每个点的坐标表示(i,ai),在坐标系中画n条垂直线,找出两条线,使得它们与x轴一起构成的容器可以容纳最多的水。

4. 三数之和:给定一个包含n个整数的数组nums,判断nums 中是否存在三个元素a,b,c使得a + b + c = 0.找出所有满足条件且不重复的三元组。

5. 最长回文子串:给定一个字符串s,找到s中最长的回文子串。

假设s的最大长度为1000。

6. Z字形变换:将字符串s按照Z字形排列,并返回排列后的字符串。

假设n行。

7. 两两交换链表中的节点:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

8. 合并两个有序链表:给定两个有序链表,将它们合并为一个新的有序链表并返回。

9. 删除链表的倒数第N个节点:给定一个链表,删除链表的倒数第N个节点,并返回链表的头节点。

10. 字符串转换整数(atoi):实现函数atoi,将字符串转换为整数。

这些题目只是作为参考,你可以根据自己的需求和面试的具体要求进行更换或增加。

在准备面试时,最好根据自己的能力和时间安排一个合理的计划,重点练习一些自认为难度适中且常见的问题。

java贪心算法几个经典例子

java贪心算法几个经典例子

java贪心算法几个经典例子1. 跳跃游戏跳跃游戏是一个非常简单的贪心算法问题,概括来说,它的目标是将一些数列中的数字与它们的下标相加,然后通过一定的规则从开始位置向后跳跃,直到跳到数组的最后一个位置。

在这个过程中,我们需要决定每一步要跳多远才能尽可能地跳到数组的最后一个位置。

具体来说,我们需要维护两个变量:一个表示目前能够跳的最远距离,另一个表示如果一步跳完所能到达的最远位置。

对于每一步,我们需要计算出在当前位置能够跳的最远距离,然后从这个范围中选出下一步的最佳位置,直到最终到达数组的结尾。

代码实现如下:```public boolean canJump(int[] nums) {int n = nums.length;int farthest = 0;for (int i = 0; i < n; i++) {if (i <= farthest) {farthest = Math.max(farthest, i + nums[i]);if (farthest >= n - 1) return true;}}return false;}```2. 最佳买卖股票时机在这个问题中,我们需要决定什么时候买入股票并在价值最高的时候卖出。

我们可以利用贪心算法来解决这个问题。

具体来说,我们需要维护两个变量:一个表示目前为止的最小股票价格,另一个表示目前为止的最大利润。

在遍历数组的过程中,我们将最小股票价格与当前价格进行比较,并尝试更新最大利润。

代码实现如下:```public int maxProfit(int[] prices) {int minPrice = Integer.MAX_VALUE;int maxProfit = 0;for (int price : prices) {if (price < minPrice) {minPrice = price;} else if (price - minPrice > maxProfit) {maxProfit = price - minPrice;}}return maxProfit;}```3. 分配饼干这个问题是关于如何将一些饼干分配给孩子们以使得他们获得最大的满足感。

java简单编程例子

java简单编程例子

java简单编程例子以下是十个以Java编写的简单编程例子:1. 计算两个整数的和```javapublic class SumCalculator {public static void main(String[] args) {int num1 = 10;int num2 = 5;int sum = num1 + num2;System.out.println("两个整数的和为:" + sum); }}```2. 判断一个数是否为偶数```javapublic class EvenNumberChecker {public static void main(String[] args) {int num = 6;if (num % 2 == 0) {System.out.println(num + "是偶数");} else {System.out.println(num + "不是偶数");}}}```3. 打印九九乘法表```javapublic class MultiplicationTable {public static void main(String[] args) {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i; j++) {System.out.print(j + " × " + i + " = " + (i * j) + "\t");}System.out.println();}}}```4. 计算一个数的阶乘```javapublic class FactorialCalculator {public static void main(String[] args) {int num = 5;int factorial = 1;for (int i = 1; i <= num; i++) {factorial *= i;}System.out.println(num + "的阶乘为:" + factorial); }}```5. 判断一个字符串是否为回文串```javapublic class PalindromeChecker {public static void main(String[] args) {String str = "level";boolean isPalindrome = true;for (int i = 0; i < str.length() / 2; i++) {if (str.charAt(i) != str.charAt(str.length() - 1 - i)) {isPalindrome = false;break;}}if (isPalindrome) {System.out.println(str + "是回文串");} else {System.out.println(str + "不是回文串");}}}```6. 求一个整数数组的平均值```javapublic class AverageCalculator {public static void main(String[] args) {int[] array = {5, 8, 12, 3, 10};int sum = 0;for (int num : array) {sum += num;}double average = (double) sum / array.length;System.out.println("数组的平均值为:" + average); }}```7. 将一个字符串反转```javapublic class StringReverser {public static void main(String[] args) {String str = "Hello World";StringBuilder reversedStr = new StringBuilder();for (int i = str.length() - 1; i >= 0; i--) {reversedStr.append(str.charAt(i));}System.out.println("反转后的字符串为:" + reversedStr.toString());}}```8. 判断一个年份是否为闰年```javapublic class LeapYearChecker {public static void main(String[] args) {int year = 2020;if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {System.out.println(year + "年是闰年");} else {System.out.println(year + "年不是闰年");}}}```9. 打印斐波那契数列前n项```javapublic class FibonacciSeries {public static void main(String[] args) {int n = 10;int[] fibonacci = new int[n];fibonacci[0] = 0;fibonacci[1] = 1;for (int i = 2; i < n; i++) {fibonacci[i] = fibonacci[i - 1] + fibonacci[i - 2];}System.out.println("前" + n + "项斐波那契数列为:");for (int num : fibonacci) {System.out.print(num + " ");}}}```10. 判断一个数是否为质数```javapublic class PrimeNumberChecker {public static void main(String[] args) {int num = 17;boolean isPrime = true;if (num <= 1) {isPrime = false;} else {for (int i = 2; i <= Math.sqrt(num); i++) { if (num % i == 0) {isPrime = false;break;}}}if (isPrime) {System.out.println(num + "是质数");} else {System.out.println(num + "不是质数");}}}```以上是十个简单的Java编程例子,涵盖了常见的数学运算、字符串处理、数组操作等基础知识点。

java基础编程算法题

java基础编程算法题

java基础编程算法题Java是一种广泛使用的编程语言,而算法是编程中不可或缺的一部分。

本文将介绍一些Java基础编程算法题,通过实例演示和解析,帮助读者巩固基本的编程概念和算法思维。

### 1. 最大公约数最大公约数是指能够同时整除两个数的最大正整数。

在Java中,我们可以使用欧几里得算法来求解最大公约数。

```javapublic class GCD {public static int gcd(int a, int b) {if (b == 0) {return a;}return gcd(b, a % b);}public static void main(String[] args) {int a = 24;int b = 36;int result = gcd(a, b);System.out.println("最大公约数为:" + result);}}```### 2. 斐波那契数列斐波那契数列是指当前数等于前两个数之和的数列。

在Java中,我们可以使用递归或循环来实现斐波那契数列。

```javapublic class Fibonacci {public static int fibonacciRecursion(int n) {if (n <= 1) {return n;}return fibonacciRecursion(n - 1) + fibonacciRecursion(n - 2);}public static int fibonacciLoop(int n) {if (n <= 1) {return n;}int a = 0, b = 1;for (int i = 2; i <= n; i++) {int temp = a + b;a = b;b = temp;}return b;}public static void main(String[] args) {int n = 10;System.out.println("第" + n + "个斐波那契数列数值(递归):" + fibonacciRecursion(n));System.out.println("第" + n + "个斐波那契数列数值(循环):" + fibonacciLoop(n));}}```### 3. 单词逆转给定一个字符串,将字符串中的单词逆转。

一百道一百以内的加减法计算题java

一百道一百以内的加减法计算题java

一百道一百以内的加减法计算题java文章标题:从简到繁,学习Java中一百以内的加减法计算题一、前言在学习编程语言中,掌握基本的加减法计算是非常重要的。

本文将从简单的加减法计算题开始,逐步引入Java编程语言,带领读者通过一百以内的加减法计算题来学习Java编程。

二、基础加减法计算我们来看一些简单的加减法计算示例吧。

1. 10 + 5 = 152. 20 - 8 = 123. 15 + 10 = 254. 25 - 7 = 18这些计算题对于我们来说可能非常简单,但是它们可以帮助我们建立起对加减法的基本理解。

三、引入Java编程现在,让我们把这些加减法计算题转化成Java程序来实现。

在Java中,我们可以使用变量和运算符来进行加减法的计算。

下面是一个简单的Java示例:```javapublic class Main {public static void main(String[] args) {int a = 10;int b = 5;int result = a + b;System.out.println("10 + 5 = " + result);}}```通过这个示例,我们可以看到,使用Java编程语言可以非常方便地实现加法计算。

接下来,我们再来看一个减法的示例:```javapublic class Main {public static void main(String[] args) {int a = 20;int b = 8;int result = a - b;System.out.println("20 - 8 = " + result);}}```通过这两个示例,我们可以初步了解Java中的加减法计算是如何实现的。

四、拓展到一百以内的加减法计算接下来,让我们挑战一些稍微复杂一点的加减法计算题。

1. 56 + 23 = ?2. 89 - 37 = ?3. 47 + 28 = ?4. 95 - 19 = ?这些计算题可能有点挑战,但是通过Java编程,我们同样可以轻松地实现这些计算。

leetcode hot 100 java题解详细注释版

leetcode hot 100 java题解详细注释版

leetcode hot 100 java题解详细注释版以下是LeetCode Hot 100 Java 题解详细注释版:1.两数之和题目描述:给定一个整数数组nums 和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

解题思路:可以使用哈希表来解决该问题。

遍历数组,对于每个元素,计算出目标值与当前元素的差值,然后在哈希表中查找该差值是否存在,如果存在则返回对应的下标。

Java 代码实现:javapublic int[] twoSum(int[] nums, int target) {Map<Integer, Integer> map = new HashMap<>();for (int i = 0; i < nums.length; i++) {int complement = target - nums[i];if (map.containsKey(complement)) {return new int[]{map.get(complement), i};}map.put(nums[i], i);}return new int[]{};}1.盛最多水的容器题目描述:给定n 个非负整数a1,a2,...,an,每个数代表一个坐标点(i, ai)。

在坐标内画n 条垂直线,使得i 垂直线的两个端点分别为(i, ai) 和(i, 0)。

找出其中的两条线,使得它们与x 轴构成的容器可以容纳最多的水。

解题思路:可以使用贪心算法来解决该问题。

首先对数组进行升序排序,然后遍历数组,对于每个元素,计算当前位置的容量并更新最大容量。

为了得到最大容量,我们可以将前面的元素看作水池的左右壁,将后面的元素看作水池的高度。

Java 代码实现:javapublic int maxArea(int[] height) {Arrays.sort(height);int maxArea = 0;for (int i = 0; i < height.length; i++) {for (int j = i + 1; j < height.length; j++) {maxArea = Math.max(maxArea, Math.min(height[i], height[j]) * (j - i));}}return maxArea;}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

JA V A经典算法40题【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....public class exp2{public static void main(String args[]){int i=0;for(i=1;i<=20;i++)System.out.println(f(i));}public static int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}或public class exp2{public static void main(String args[]){int i=0;math mymath = new math();for(i=1;i<=20;i++)System.out.println(mymath.f(i));}}class math{public int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。

1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。

public class exp2{public static void main(String args[]){int i=0;math mymath = new math();for(i=2;i<=200;i++)if(mymath.iszhishu(i)==true)System.out.println(i);}}class math{public int f(int x){if(x==1 || x==2)return 1;elsereturn f(x-1)+f(x-2);}public boolean iszhishu(int x){for(int i=2;i<=x/2;i++)if (x % 2==0 )return false;return true;}}【程序3】题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。

例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

public class Shuixianhua {public static void main(String[] args) {int i,a,b,c;System.out.println("水仙花数:");for(i=100;i<1000;i++){a=i/100;b=i%100/10;c=i%10;if(i==a*a*a+b*b*b+c*c*c)} System.out.print(i+",");}}【程序4】题目:将一个正整数分解质因数。

例如:输入90,打印出90=2*3*3*5。

程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n <> k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

public class exp2{public exp2(){}public void fengjie(int n){for(int i=2;i<=n/2;i++){if(n%i==0){System.out.print(i+"*");fengjie(n/i);}}System.out.print(n);System.exit(0);///不能少这句,否则结果会出错}public static void main(String[] args){String str="";exp2 c=new exp2();str=javax.swing.JOptionPane.showInputDialog("请输入N的值(输入exit退出):");int N;N=0;try{N=Integer.parseInt(str);}catch(NumberFormatException e){e.printStackTrace();}System.out.print(N+"分解质因数:"+N+"=");c.fengjie(N);}}【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

1.程序分析:(a> b)?a:b这是条件运算符的基本例子。

import javax.swing.*;public class ex5 {public static void main(String[] args){String str="";str=JOptionPane.showInputDialog("请输入N的值(输入exit退出):");int N;N=0;try{N=Integer.parseInt(str);}catch(NumberFormatException e){e.printStackTrace();}str=(N>90?"A":(N>60?"B":"C"));System.out.println(str);}}import java.util.Scanner;public class Chengji {public static void main(String[] args) {System.out.println("请输入成绩:");Scanner scan = new Scanner(System.in);int N = scan.nextInt();if(N>100||N<0)System.out.println("输入数据有误;");else {String a="";a=N>=90?"A":(N<60?"C":"B");System.err.println("输入的成绩级别为:"+a);}}}【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

1.程序分析:利用辗除法。

最大公约数:public class CommonDivisor{public static void main(String args[]){commonDivisor(24,32);}static int commonDivisor(int M, int N){if(N<0||M<0){System.out.println("ERROR!");return -1;if(N==0){System.out.println("the biggest common divisor is :"+M);return M;}return commonDivisor(N,M%N);}}最小公倍数和最大公约数:import java.util.Scanner;public class CandC{//下面的方法是求出最大公约数public static int gcd(int m, int n){while (true){if ((m = m % n) == 0)return n;if ((n = n % m) == 0)return m;}}public static void main(String args[]) throws Exception{//取得输入值//Scanner chin = new Scanner(System.in);//int a = chin.nextInt(), b = chin.nextInt();int a=23; int b=32;int c = gcd(a, b);System.out.println("最小公倍数:" + a * b / c + "\n最大公约数:" + c); }}【程序7】题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

1.程序分析:利用while语句,条件为输入的字符不为'\n '.import java.util.Scanner;public class ex7 {public static void main(String args[]){System.out.println("请输入字符串:");Scanner scan=new Scanner(System.in);String str=scan.next();String E1="[\u4e00-\u9fa5]";String E2="[a-zA-Z]";int countH=0;int countE=0;char[] arrChar=str.toCharArray();String[] arrStr=new String[arrChar.length];for (int i=0;i<arrChar.length ;i++ )arrStr[i]=String.valueOf(arrChar[i]);}for (String i: arrStr ){if (i.matches(E1)){countH++;}if (i.matches(E2)){countE++;}}System.out.println("汉字的个数"+countH);System.out.println("字母的个数"+countE);}}【程序8】题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。

相关文档
最新文档