java算法相关实现代码,不废话,直接上代码,简单易懂

***有帮助请点个赞谢谢!!!!!!!!!!!!***

1.实现1到n的累加和

package day05;
import java.util.Scanner;
/**
 * 递归实现1到n的累加和
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月24日下午12:46:11
 */
public class qiuhe {
	public static void main(String [] args)
	{
		System.out.println("请输入n:");
		Scanner scanner=new Scanner(System.in);
		int a=scanner.nextInt();
		System.out.println("累加和为:"+q(a));
	}
	public static int q(int n)
	{
		if(n==1)
			return 1;
		else
			return n+q(n-1);
			
	}
}

2.合并两个有序数组

package day07;
/**
 * 2 合并两个有序数组

给定两个有序整数数组,nums1 和nums2 ,将nums2合并到nums1中,使得nums1成为一个有序数组

说明 : 初始化 nums1 和 nums2 的元素数量分别为 m 和 n
           你可以假设nums1有足够的空间(空间大小大于或等于 m+n),来保存nums2中的元素

示例 : 
输入 :  nums1 = {1,2,3,0,0,0} m = 3;
nums2 = {2,5,6}  n=3
输出 : {1,2,2,3,5,6}
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月26日下午3:20:53
 */
public class Combine_arr {
	public static void main(String [] args)
	{
	
		int [] nums1=new int [100];
			nums1[0]=0;
			nums1[1]=1;
			nums1[2]=0;
			nums1[3]=6;
			nums1[4]=2;
			int [] nums2={0,1,0,6,2};
			combine(nums1,nums2);
			paixu(nums1);
			for(int i=0;i<c;i++)
			{
				System.out.println(nums1[i]);
			}
	}
	static int c=0;
	private static int[] nums1;
	public static void combine(int [] arr1,int [] arr2)
	{	//得到arr1有数据的下标a
		int a=arr1.length-1;
		for(int i=arr1.length-1;i>=0;i--)
		{
			if(arr1[i]!=0)
			{
				a=i;
				break;
			}
		}
	
		//arr2的值赋值给arr1
		int b=arr2.length;
		c=a+1+b;//要输出的位数
		int d=0;
		for(int i=a;i<c;i++)
		{
			if(d<=b-1)
			{
			arr1[i+1]=arr2[d];
			d++;
			}
		}
		
	}
	public static void paixu(int [] arr)
	{
		for(int i=0;i<c;i++)
		{
			int min=i;
			for(int j=i+1;j<c;j++)
			{
				if(arr[min]>arr[j])
				{
					min=j;
				}
			}
			if(min!=i)
			{
				int temp=0;
				temp=arr[i];
				arr[i]=arr[min];
				arr[min]=temp;
			}
		}
	}
}

有帮助请点个赞谢谢!!!

3.验证是否为回文串

package day07;
/**
 * 3 验证回文串

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写

说明 : 本题中,我们将空字符串定义为有效的回文串,和回文数一样,正读反读一样

示例 1 
输入 :  “A man , a plan , a canal : Panama”
输出 :  true

示例 2 
输入 :  “race  a  car”
输出 :  false

 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月26日下午4:41:23
 */
public class Huiwenstring {
	public static void main(String [] args)
	{	
		String a="A man , a plaz , a canal : Panama";
		inspect(a);
	}
	public static void inspect(String n)
	{	
		String b="";
		String [] arr=n.split(" ");
		for(int i=0;i<arr.length;i++)
		{
			b+=arr[i];
		}
//		System.out.println(b);
		String c=b.toLowerCase();
//		System.out.println(c);
		char [] d=c.toCharArray();
		int k=0;
		for(int i=0;i<d.length;i++)
		{
			int e=d[i];
			if(e>=48&&e<=57||e>=97&&e<=122)
			{
				d[k]=d[i];
				k++;
			}
		 }
		String q="";
		for(int i=k-1;i>=0;i--)
		{
			q+=d[i];
		}
		String p="";
		for(int i=0;i<k;i++)
		{
			p+=d[i];
		}
		if(q.equals(p))
		{
			System.out.println("是回文");
		}
		else
			System.out.println("不是回文");
	}
}

4.将数组表示的值加1,再用数组输出

package day07;
/**
 * 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一,
最高位数字存放在数组的首位,数组中每个元素只存储一个数字
你可以假设除了整数0之外,这个整数不会以 零 开头
(要考虑进位)
示例 1 
输入 :  {1,2,3}
输出 :  {1,2,4}
解释 :  输入数组表示数字 123.
示例 2
输入 :  {4,3,2,1}
输出 :  {4,3,2,2}
解释 :  输入数组表示数字 4321.
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月26日下午3:21:25
 */
public class Jia1 {
public static void main(String [] args)
	{
		int [] arr1={1,2,3,9};
		jia1(arr1);
		System.out.println("整数加1后的值为:"+a);
		separate(a);
	}
static int a=0;
//得到加1后的整数
public static void jia1(int [] arr)
	{
		for(int i=0;i<arr.length;i++)
		{
			a=a*10+arr[i];
		}
		a+=1;
	}	
//将加1后的整数分到数组里
public static void separate(int n)
	{	int e=n;
		int d=0;//计数整数位数
		while(n!=0)
		{
			n/=10;
			d++;
		}//n变了
		int [] arr2=new int [100];
		int b=10;
		int c=0;
		//循环填入
		for(int i=d-1;i>=0;i--)
		{
			arr2[i]=e%10;
			e/=10;
		}
		//循环输出
		for(int i=0;i<d;i++)
		{
			System.out.println(arr2[i]);
		}
	}
}

5.找出只出现一次的数

package day07;
/**
 * 4 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次,找出那个只出现一次的元素

说明 : 你可以不使用额外空间来实现吗?

示例 1 
输入 :  {2,2,1}
输出 :  1
示例 2 
输入 :  {4,1,2,1,2}
输出 :  4
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月26日下午3:20:33
 */
public class Onlyone {
public static void main(String [] args)
	{
		int [] arr1={0,-2,-3,-3,0};
		find(arr1);
	}
public static void find(int [] arr)
	{
		for(int i=0;i<arr.length;i++)
		{
			int b=0; 
			int a=arr[i];
			for(int j=0;j<arr.length;j++)
			{
				if(arr[j]==a)
				{
					b++;
				}
			}	
			if(b==1)
			{
				System.out.println(a);
				break;
			}
		}
	}
}

有帮助请点个赞谢谢!!!

6.不使用额外数组空间移除元素

package day07;
/**
 * 4 移除元素

给定一个数组 nums 和一个值 val 你需要原地移除所有数值等于val的元素,返回移除后数组的新长度,不要使用额外的数组空间
元素的顺序可以改变,你不需要考虑数组中超出新长度后面的元素

示例 1 
给定 nums = {3,2,2,3};  val = 3;
函数应该返回新的长度 2 , 并且 nums中的前两个元素均为 2
你不需要考虑数组中超出新长度后面的元素
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月26日下午4:14:33
 */
public class Remove {
public static void main(String [] args)
	{
		int [] nums={3,2,2,3};
		int val=3;
		remove(nums,val);
	}
public static void remove(int [] arr,int n)
	{
		int a=0;
		for(int i=0;i<arr.length;i++)
		{
			if(arr[i]!=n)
			{
				arr[a]=arr[i];
				a++;
			}
		}
		int b=a+1;
		System.out.println("长度为:"+b);
		for(int i=0;i<a;i++)
		{
			System.out.println(arr[i]);
			
		}
		
	}
}

7.输出最后一个单词的长度

package day07;
import java.util.Scanner;
/**
 * 1 最后一个单词的长度

给定一个仅包括大小写字母和空格 ‘  ’ 的字符串 , 返回其最后一个单词的长度
如果不存在最后一个单词,请返回0

说明 : 一个单词是指由字母组成,但不包括任何空格的字符串

示例 : 
输入 :  “Hello World”
输出 :  5
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月26日上午9:20:48
 */
public class Thelastlength {
public static void main(String [] args)
	{
	 System.out.println("请输入一个字符串:");
			Scanner scanner=new Scanner(System.in);
			String z=scanner.nextLine();
		String[] a=z.split(" ");
		System.out.println("长度为:");
		 System.out.println(calculate(a));
	}
	public static int calculate(String [] n)
	{
		if(n.length==0)
		{
			return 0;
		}
		return n[n.length-1].length();
	}
}

8.在数组中插入目标值

package day06;
import java.util.Scanner;
/**
 * 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引,如果目标值不存在数组中,返回他将会被按顺序插入的位置
你可以假设数组中无重复元素
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月25日下午7:12:51
 */
public class Insert {
	public static void main(String [] args)
	{
		System.out.println("请输入要确定位置的数:");
		Scanner scanner=new Scanner(System.in);
		int z=scanner.nextInt();
		System.out.println(insert(z));
		
	}
	public static int insert(int n)
	{
		
		int [] arr={1,3,5,6};
//		for(int j=0;j<arr.length;j++)
//	{
		for(int i=0;i<arr.length;i++)
		{
			if(arr[i]==n)
			{
				return i;
			}
			if(arr[i]<n&&arr[i+1]>n)
			{
				return i+1;
			}
			if(arr[i]>n)
			{
				return i;
			}
			if(arr[arr.length-1]<n)
			{
				return arr.length;
			}
		}
		return -1;

//	}
	 
	}

}

有帮助请点个赞谢谢!!!

9.反转整数并输出

package day06;
/**
 * 给出一个 32 位 的有符号整数,你需要将这个整数中每位上的数字进行反转
 */
import java.util.Scanner;
public class Reserve1 {
	public static void main(String [] args)
	{
	Scanner scanner = new Scanner(System.in);
	System.out.println("请输入一个整数:");
	int num = scanner.nextInt();
	num1(num);
	}
	static int a=0;
	static int b=0;
	public static void num1(int n)
	{
		while (n!=0)
		{
			b=n%10;
			a=a*10+b;
			n=n/10;
		}
		System.out.println("反转后为:"+a);
	}
}

10.斐波那契找到是第几位的数

package day06;
import java.util.Scanner;
/**
 *声明一个方法,接收一个参数
 	判断传递的参数值再斐波那契数列的第几位上
 	如果不存在 打印 -1 , 如果存在 打印对应的位数
        难点 : 如何算不存在?
            大于上一位,小于当前位  说明不存在
 * 
 * 
 */
public class Fabonacci {
	public static void main(String [] args)
	{
		System.out.println(f(4));
	}
	static long d=0;
	public static long f(long n)
	{
		long a=1;
		long b=1;
		long c=1;
		if(n==1)
		{	
			return 1;
		}
		for(int i=3;true;i++)
		{
			c=a+b;
			a=b;
			b=c;
			d=i;
			if(c==n)
				return d;
			if(n>c&&n<(a+b))
				return -1;
		}
		
		
	}
}

有帮助请点个赞谢谢!!!

11.给定一组成绩求平均分 最高分 最低分 总分

package dayo5_2;

public class grades {
	public static void main(String [] args)
	{
		 double[] scores = {55.5,65.8,78.4,99,100,95.4,65,98,78,90};
		 highest(scores);
		 lowest(scores);
		 sum(scores);
		 avarage(scores);
		 morethan80(scores);
	}
	public static void highest(double [] arr)
	{
		double a=0;
		for(int i=0;i<arr.length;i++)
		{
			if(arr[i]>a)
				a=arr[i];
		}
		System.out.println("最高分为:"+a);
	}
	public static void lowest(double [] arr)
	{

		double a=arr[0];
		for(int i=1;i<arr.length;i++)
		{
			if(arr[i]<a)
				a=arr[i];
		}
		System.out.println("最低分为:"+a);
	}
	public static void sum(double [] arr)
	{
		double a=0;
		for(int i=0;i<arr.length;i++)
		{
			a+=arr[i];
		}
			System.out.println("总分为:"+a);
	}
	public static void avarage(double [] arr)
	{
		double a=0;
		for(int i=0;i<arr.length;i++)
		{
			a+=arr[i];
		}
		double b=a/arr.length;
		System.out.println("平均分为:"+b);
	}
	public static void morethan80(double [] arr)
	{
		int a=0;
		for(int i=0;i<arr.length;i++)
		{
			
			if(arr[i]>80)
			{
				a++;
			}
		}
		System.out.println("大于80分的人有:"+a+"个");
		
	}
}

有帮助请点个赞谢谢!!!

12.简单计算器(switch实现)

package dayo5_2;
import java.util.Scanner;
/**
 * 简单模拟计算器功能
 * 
 * 只需要考虑两个数的 + - * / %
 *
 * 可以使用switch完成
 * 
 * 第一次输入 和 第三次输入 是 数字 
 * 
 * 第二次输入 是 运算符 
 * 
 */
public class jisuanqi {
	public static void main(String [] args)
	{
		Scanner scanner=new Scanner(System.in);
		int q=scanner.nextInt();
		String w=scanner.next();
		int e=scanner.nextInt();
		calculator(w,q,e);
	}
	public static void calculator(String n,int a,int b)
	{
		switch(n)
		{
		case "+":
			int c=a+b;
		System.out.println("="+c);
			break;
		case "-":
			int d=a-b;
		System.out.println("="+d);
			break;
		case "*":
			int e=a*b;
		System.out.println("="+e);
		break;
		case "/":
			int f=a/b;
		System.out.println("="+f);
		break;
		case "%":
			int g=a%b;
		System.out.println("="+g);
		}
	}
}

13.冒泡排序

package package1;

public class maopao1 {
public static void main(String [] args)
	{
		int [] arr1={1,4,3,6,2,7,8,5,9};
		Bubblesort(arr1);
		for(int i=0;i<arr1.length;i++)
		{
			System.out.println(arr1[i]);
		}
	}
public static void Bubblesort(int [] arr)
{
	for(int i=0;i<arr.length-1;i++)
	{
		for(int j=0;j<arr.length-1;j++)
		{
			if(arr[j]>arr[j+1])
			{
				int temp=0;
				temp=arr[j];
				arr[j]=arr[j+1];
				arr[j+1]=temp;
			}
		}
	}
	}
}

有帮助请点个赞谢谢!!!

14.判断一个正数是否是回文数

package day06;
/**
 * 判断一个正数是否是回文数,回文数是指正序(从左到右) 和 倒叙(从右到左) 读  都是一样的整数
 */
import java.util.Scanner;
public class Huiwen1 {
	public static void main(String [] args)
	{
		Scanner scanner=new Scanner(System.in);
		int z=scanner.nextInt();
		System.out.println(h(z));
		System.out.println(a);
	}
	static int a=0;
	public static Boolean h(int n)
	{
		
		int b=0;
		int c=n;
		if(n<0)
		{
			return false;
		}
		else if(n==0)
		{
			return true;
		}
		else if(n>0)
		{
			while(n!=0)
			{
				b=n%10;
				a=a*10+b;
				n=n/10;
			}
			if(a==c)
			{
				return true;
			}
		}
		return false;
	}
}

15.求n的阶乘

package day05;
import java.util.Scanner;
public class jiecheng {
	public static void main(String [] args)
	{
		System.out.println("请输入要求的数:");
		Scanner scanner=new Scanner(System.in);
		int a=scanner.nextInt();
		System.out.println("该数的阶乘为:"+j(a));
		
	}
	public static int j(int n)
	{
		if(n==1)
			return 1;
		else
			return n*j(n-1);
	}
}

有帮助请点个赞谢谢!!!

16.求第n位的斐波那契数

package day05;
import java.util.Scanner;
public class Fabonacci1 {
	public static void main(String [] args)
	{
		System.out.println("请在输入斐波那契中的位数:");
		Scanner scanner=new Scanner(System.in);
		int f=scanner.nextInt();
		System.out.println("第"+f+"位为:"+F(f));
		
	}
	public static int F(int n)
	{
		if(n==1||n==2)
			return 1;
		else
			return F(n-1)+F(n-2);
	}
}

17.数组反转并输出

package dayo5_2;

import java.util.Scanner;
/**
 * 数组反转
    比如 有一个数组为 1,2,3,4 反转之后 得到 4,3,2,1
    不能使用额外数组空间
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月24日下午6:32:17
 */
public class arr2 {
	public static void main(String [] args)
	{	
		
		System.out.println("请输入数据的个数:");
		Scanner scanner=new Scanner(System.in);
		int a=scanner.nextInt();
		int [] arr1=new int [a];
		System.out.println("请输入每一个数据的值,回车确定:");
		for(int i=0;i<a;i++)
		{
			arr1[i]=scanner.nextInt();
		}
		System.out.println("反转后为:");
		turn(arr1);
	}
	public static void turn(int [] arr)
	{
		for(int i=0;i<arr.length/2;i++)
		{
				int b=0;
				b=arr[i];
				arr[i]=arr[arr.length-(i+1)];
				arr[arr.length-(i+1)]=b;
		}
		for(int i=0;i<arr.length;i++)
		{
			System.out.println(arr[i]);
		}
	}
}

有帮助请点个赞谢谢!!!

18.数组求解杨辉三角

package dayo5_2;
import java.util.Scanner;
public class arr1 {
	public static void main(String [] args)
	{
		System.out.println("前多少行?:");
		Scanner scanner=new Scanner(System.in);
		int a=scanner.nextInt();
		sanJiao(a);
	}
	public static void sanJiao(int a)
	{
		int [][] arr=new int [a][a];
		for(int i=0;i<a;i++)
		{
			for(int j=0;j<=i;j++)
			{
				if(j==0||j==i)
				{
					arr[i][j]=1;
				}
				else
					arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
			}
		}
		for(int i=0;i<a;i++)
		{
			for(int j=0;j<=i;j++)
			{
				System.out.print(arr[i][j]+" ");
					
			}
			System.out.println();
		}
	}
}

19.原地删除数组中的重复元素

package day06;
/**
 * 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度
 * @author 颜一_颜大帅哥
 *
 * @data 2024年7月25日下午7:14:22
 */
public class Deletethesame {
	public static void main(String [] args)
	{
		int [] nums={1,1,2,8,8,28,28,72,72};
		b=nums.length;
		delete(nums);
		paixu(nums);
		int l=b;
		for(int g=0;g<l;g++)
		{
			System.out.println(nums[g]);
		}
	}

	public static void paixu(int [] arr)
	{
		for(int i=0;i<arr.length-1;i++)
		{
			int min=i;
			for(int j=i+1;j<arr.length;j++)
			{
				if(arr[min]>arr[j])
				{
					min=j;
				}
			}
			if(min!=i)
			{
				int temp=0;
				temp=arr[i];
				arr[i]=arr[min];
				arr[min]=temp;
			}
		}
	}

	static int b=0;
	public static void delete(int [] arr)
	{
		
		for(int i=0;i<arr.length;i++)
		{
			
			int a=arr[i];
			
			for(int j=i+1;j<b;j++)
			{
				if(a==arr[j])
				{	
					
					for(int k=j+1;k<b;k++)
					{
						arr[k-1]=arr[k];
					}
					b-=1;
				}		
			}
		}
		
		
		
	}
}

有帮助请点个赞谢谢!!!

  • 11
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值