java五道基础算法题

常见的算法题,难度从简单到困难,可以用来开拓下思维。

  • 根据年龄,身高,姓名排序,前一个相等就用后一个进行排序

javabean基础类

java 复制代码
package com.gaofeng.demo09;


public class GirlFriend {
    private  String name;
    private  Integer age;
    private Double height;

    public GirlFriend() {
    }

    public GirlFriend(String name, Integer age, Double height) {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public Integer getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(Integer age) {
        this.age = age;
    }

    /**
     * 获取
     * @return height
     */
    public Double getHeight() {
        return height;
    }

    /**
     * 设置
     * @param height
     */
    public void setHeight(Double height) {
        this.height = height;
    }

    public String toString() {
        return "GirlFriend{name = " + name + ", age = " + age + ", height = " + height + "}";
    }
}
java 复制代码
package com.gaofeng.demo09;

import java.util.Arrays;
import java.util.Comparator;

public class demo01 {
    public static void main(String[] args) {
        //
        GirlFriend gf1 = new GirlFriend("xiaoshishi", 21, 1.67);
        GirlFriend gf2 = new GirlFriend("xiaodandan", 19, 1.70);
        GirlFriend gf3 = new GirlFriend("xiaohuihui", 20, 1.68);

        GirlFriend[] arr = {gf1, gf2, gf3};

        /*Arrays.sort(arr, new Comparator<GirlFriend>() {
            @Override
            public int compare(GirlFriend o1, GirlFriend o2) {
                double i = o1.getAge() - o2.getAge();
                i = i == 0 ? o1.getHeight() - o2.getHeight() : i;
                i = i == 0 ? o1.getName().compareTo(o2.getName()):i;
                if(i > 0){
                    return 1;
                }else if(i < 0){
                    return -1;
                }else{
                    return 0;
                }
            }
        });*/
        Arrays.sort(arr, (o1,o2) -> {
            double i = o1.getAge() - o2.getAge();
            i = i == 0 ? o1.getHeight() - o2.getHeight() : i;
            i = i == 0 ? o1.getName().compareTo(o2.getName()):i;
            if(i > 0){
                return 1;
            }else if(i < 0){
                return -1;
            }else{
                return 0;
            }
        });

        System.out.println(Arrays.toString(arr));
    }
}
  • 斐波拉契数列
java 复制代码
package com.gaofeng.demo09;

import java.util.Arrays;

public class Demo02 {
    public static void main(String[] args) {

        // 从第三个数据开始,是前两个数据的和
        int[] arr = new int[12];
        arr[0] = 1;
        arr[1] = 1;
        /*for (int i = 2; i < arr.length; i++) {
            arr[i] = arr[i - 1] + arr[i - 2];
        }
        System.out.println(Arrays.toString(arr));*/

        int num = fibonacci(12);
        System.out.println(num); // 144
    }

    // 递归解决
    public static int fibonacci(int n) {
        if (n == 1 || n == 2) {
            return 1;
        }
        return fibonacci(n - 1) + fibonacci(n - 2);
    }
}
  • 猴子吃桃问题,猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个,直到第10天,只剩下1个,共摘了多少个桃子?
java 复制代码
package com.gaofeng.demo09;

public class Demo03 {
    public static void main(String[] args) {
        // 出口 day == 10    1
        System.out.println(getCount(1));  //1534

    }

    public static int getCount(int day){
        if(day > 10 || day < 1){
            System.out.println("输入错误");
        }
        if(day == 10){
            return 1;
        }else{
            return (getCount(day + 1) + 1)*2;
        }
    }
}
  • 爬楼梯问题,有20阶楼梯,每次只能爬1阶或者2阶,有多少种走法
java 复制代码
package com.gaofeng.demo09;

public class Demo04 {
    public static void main(String[] args) {
        System.out.println(getCount(20));  //10946
    }
    // 爬楼梯

    public static int getCount(int step){
        if(step == 1){
            return 1;
        }else if(step == 2){
            return 2;
        }else{
            return getCount(step - 1) + getCount(step - 2);
        }
    }
}
  • 爬楼梯,有时候可以一个台阶,有时候可以两个台阶,有时候可以三个台阶,总共有20个台阶,有多少种走法
java 复制代码
package com.gaofeng.demo09;

public class Demo05 {
    public static void main(String[] args) {
        int count = getCount(20);
        System.out.println(count); //121415
    }

    // 爬楼梯,有时候可以一个台阶,有时候可以两个台阶,有时候可以三个台阶,总共有20个台阶,有多少种走法
    public static int getCount(int step){
        if(step == 1){
            return 1;
        }else if(step == 2){
            return 2;
        }else if(step == 3){
            return 4;
        }else{
            return getCount(step - 1) + getCount(step - 2) + getCount(step - 3);
        }
    }
}
相关推荐
i***1324几秒前
SpringCloud实战十三:Gateway之 Spring Cloud Gateway 动态路由
java·spring cloud·gateway
计算机徐师兄2 分钟前
Java基于微信小程序的食堂线上预约点餐系统【附源码、文档说明】
java·微信小程序·食堂线上预约点餐系统小程序·食堂线上预约点餐微信小程序·java食堂线上预约点餐小程序·食堂线上预约点餐小程序·食堂线上预约点餐系统微信小程序
无心水1 小时前
【分布式利器:腾讯TSF】10、TSF故障排查与架构评审实战:Java架构师从救火到防火的生产哲学
java·人工智能·分布式·架构·限流·分布式利器·腾讯tsf
燃于AC之乐3 小时前
我的算法修炼之路--4 ———我和算法的爱恨情仇
算法·前缀和·贪心算法·背包问题·洛谷
Boilermaker19928 小时前
[Java 并发编程] Synchronized 锁升级
java·开发语言
Cherry的跨界思维8 小时前
28、AI测试环境搭建与全栈工具实战:从本地到云平台的完整指南
java·人工智能·vue3·ai测试·ai全栈·测试全栈·ai测试全栈
MM_MS8 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
独自破碎E9 小时前
【二分法】寻找峰值
算法
alonewolf_999 小时前
JDK17新特性全面解析:从语法革新到模块化革命
java·开发语言·jvm·jdk
一嘴一个橘子9 小时前
spring-aop 的 基础使用(啥是增强类、切点、切面)- 2
java