javascript-最小位数更改以使两个数组具有相同的值

前端之家收集整理的这篇文章主要介绍了javascript-最小位数更改以使两个数组具有相同的值 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我对编码很陌生,我正在尽力而为,但是经过数小时的研究,我仍然无法弄清这一点.我正在尝试通过最少的移动使这两个单独的数组相同.我只能或-一次只能有一个号码.

这是挑战:

不允许对数字进行重新排序例如,考虑两个数组:Andrea的[123,543]和Maria的[321,279].对于第一个数字,Andrea可以将1递增两次以达到3.2已经相等.最后,她将3减2等于1.花了4步才能达到目标.对于第二个整数,她递减5 3次,递增4 3次和3 6次.花了12步来转换第二个数组元素.总共花了16步来转换组成整个数组的两个值.

@H_404_9@let a = [1234,4321] let m = [2345,3214] function minimumMoves(a,m) { // Write your code here let numMoves = 0; let num1 = '' ; let num2 = '' ; let digit1 = ''; let digit2= ''; for (let i = 0; i < a.length; i++) { num1 = a[i]; while (num1 != 0) { digit1 = num1 % 10; digit2 = num2 % 10; num1 = Math.trunc(num1 / 10); num2 = Math.trunc(num2 / 10); numMoves = numMoves + Math.abs(digit1 - digit2); } } return numMoves }
最佳答案
检查此代码

@H_404_9@a = [1234,4321] b = [2345,m) { let numMoves1 = 0,numMoves2 = 0; let num1 = '',num2 = ''; let digit1 = '',digit2 = ''; //Forward for (let i = 0 ; i < a.length ; i++) { num1 = a[i]; num2 = m[i]; for (let j = 0 ; j < a.length ; j++) { digit1 = num1 % 10; digit2 = num2 % 10; numMoves1 += Math.abs(digit1-digit2); num1 = (num1 - digit1) / 10; num2 = (num2 - digit2) / 10; } } //Backward for (let i = 0 ; i < a.length ; i++) { num1 = m[i]; num2 = a[i]; for (let j = 0 ; j < a.length ; j++) { digit1 = num1 % 10; digit2 = num2 % 10; numMoves2 += Math.abs(digit1-digit2); num1 = (num1 - digit1) / 10; num2 = (num2 - digit2) / 10; } } if (numMoves1>numMoves2) { //Answer is numMoves1 } else if (numMoves1<numMoves2) { //Answer is numMoves2 } else { //Answer is any one,i.e,either numMoves1 or numMoves2 } }

如果您需要对此代码进行快速验证,请导航Here.

然后粘贴以下代码

@H_404_9@/****************************************************************************** Online Java Compiler. Code,Compile,Run and Debug java program online. Write your code in this editor and press "Run" button to execute it. *******************************************************************************/ public class Main { public static void main(String[] args) { Integer[] a = {1234,4321}; Integer[] m = {2345,3214}; Integer numMoves1 = 0,numMoves2 = 0; Integer num1 = 0,num2 = 0; Integer digit1 = 0,digit2 = 0; //Forward for (Integer i = 0 ; i < a.length ; i++) { num1 = a[i]; num2 = m[i]; for (Integer j = 0 ; j < a.length ; j++) { digit1 = num1 % 10; digit2 = num2 % 10; numMoves1 += Math.abs(digit1-digit2); num1 = (num1 - digit1) / 10; num2 = (num2 - digit2) / 10; } } //Backward for (Integer i = 0 ; i < a.length ; i++) { num1 = m[i]; num2 = a[i]; for (Integer j = 0 ; j < a.length ; j++) { digit1 = num1 % 10; digit2 = num2 % 10; numMoves2 += Math.abs(digit1-digit2); num1 = (num1 - digit1) / 10; num2 = (num2 - digit2) / 10; } } if (numMoves1>numMoves2) { //Answer is numMoves1 } else if (numMoves1<numMoves2) { //Answer is numMoves2 } else { //Answer is any one,either numMoves1 or numMoves2 } System.out.println(numMoves1 + " & " + numMoves2); } }

我希望这个算法有帮助

猜你在找的JavaScript相关文章