华为OD机试真题 Java 实现【求最小步数】【2023 B卷 100分】,附详细解题思路

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入
      • 2、输出

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

  • 专栏福利:限时订阅49.9,订阅后可加入华为OD刷题群,获得哪吒优先答疑机会(华为OD刷题指导,远程代码调试),群里大佬众多可以抱团取暖,群友刷题经验分享,考试经验分享。

在这里插入图片描述

一、题目描述

求从坐标零点到坐标点n的最小步数,一次只能沿横坐标向左或向右移动 2 或 3。

注意:途径的坐标点可以为负数。

二、输入描述

坐标点n。

三、输出描述

输出从坐标零点移动到坐标点n的最小步数。

四、解题思路

先试算一下,找找规律

1 = -2 + 3
2 = 2
3 = 3
4 = 2 + 2
5 = 3 + 2
6 = 3 + 3
7 = 3 + 2 + 2
8 = 3 + 3 + 2
9 = 3 + 3 + 3
10 = 3 + 3 + 2 + 2
11 = 3 + 3 + 3 + 2
12 = 3 + 3 + 3 + 3

从4开始就有规律了,
4 - 6 是2
7 - 9 是3
10 - 12 是4

就是看有几个3,用的3越多,步数越小。

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    if(n == 1){
        System.out.println(2);
    }else if(n == 2){
        System.out.println(1);
    }else{
        if(n%3==0){
            System.out.println(n/3);
        }else {
            System.out.println(n/3+1);
        }
    }
}

六、效果展示

1、输入

13

2、输出

5

华为OD机试真题 Java 实现【求最小步数】【2023 B卷 100分】,附详细解题思路_第1张图片


下一篇:华为OD机试真题 Java 实现【路灯照明问题】【2022Q4 100分】,感谢fly晨发现这个问题,并提供更优质的算法

本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为od,java,华为,程序人生,学习)