当前位置: 首页 > news >正文

掘金2.计算位置 x 到 y 的最少步数(简单01)

public class Main {public static int solution(int xPosition, int yPosition) {int diff = (yPosition - xPosition);// 计算差值if(diff < 0)diff *= -1;int steps = 0; // 初始化步数int begin = 0;// 初始化当前位置int step = 1;//初始化步长// 循环直到到达目标位置while (begin < diff / 2) { begin += step;step++;steps++;}if(begin == diff / 2){return steps * 2;}else if( (diff - 2 * (begin - step)) > step ){return steps * 2;}else return steps * 2 - 1;}public static void main(String[] args) {// You can add more test cases hereSystem.out.println(solution(12, 6) == 4);System.out.println(solution(34, 45) == 6);System.out.println(solution(50, 30) == 8);}
}

简单题,多种解法,这里是对能出现的所有三种情况进行判断,

从零开始累加,大于或者等于总长度德一半停止累加:

        等于总长度的一半 = 直接乘以2

        大于总长度的一半时,判断多出来的长度是否等于最后一步步长

                大于最后一步步长: (例如1 2 3 2 2 1 中,当累加到3时,大于总长度的一般,多出来的长度=11 - 2 * (1 + 2 )= 5 > 3 所以一步走不完,要拆成两步)

                等于最后一步步长:(*2-1)

最后代码可以更加简洁:

public class Main {public static int solution(int xPosition, int yPosition) {int diff = (yPosition - xPosition);// 计算差值if(diff < 0)diff *= -1;int steps = 0; // 初始化步数int begin = 0;// 初始化当前位置int step = 1;//初始化步长// 循环直到到达目标位置while (begin < diff / 2) { begin += step;step++;steps++;}if( (diff - 2 * (begin - step)) == step )return steps * 2 - 1;return steps * 2;}public static void main(String[] args) {// You can add more test cases hereSystem.out.println(solution(12, 6) == 4);System.out.println(solution(34, 45) == 6);System.out.println(solution(50, 30) == 8);}
}

通过截图:


http://www.mrgr.cn/news/52998.html

相关文章:

  • Selenium打开外部应用程序的弹窗处理
  • vue使用 jsplumb 生成流程图
  • 【端到端】华科X地平线:VAD, 基于矢量场景表征的端到端自动驾驶
  • Spark等大数据处理框架的Java API
  • 【远程监控新体验】OpenObserve结合内网穿透无公网IP远程访问全攻略
  • OpenCV高级图形用户界面(19)设置窗口属性的函数setWindowProperty()的使用
  • SpringBoot驱动的智能物流管理解决方案
  • 玄机平台-应急响应-webshell查杀
  • diff 算法
  • 深度学习500问——Chapter17:模型压缩及移动端部署(5)
  • 【艾思科蓝】Imagen:重塑图像生成领域的革命性突破
  • 我谈结构自相似性SSIM——实质度量的是什么?
  • js的for in 和 for of的详解
  • 智能体(Agent)大模型时代的AI革新者
  • YOLOv11改进-卷积-引入小波卷积WTConv 解决多尺度小目标问题
  • JS-常用功能
  • 商城系统如何适应全球化市场的拓展
  • 图片加水印怎么加?步骤非常简单
  • Android应用如何保护用户隐私和数据安全
  • 数据压缩(5)——上下文转换编码