zoukankan      html  css  js  c++  java
  • Equal Sides Of An Array

    参考:http://stackoverflow.com/questions/34584416/nested-loops-with-arrays

    You are going to be given an array of integers. Your job is to take that array and find an index N where the sum of the integers to the left of N is equal to the sum of the integers to the right of N. If there is no index that would make this happen, return -1.

    For example:

    Let's say you are given the array {1,2,3,4,3,2,1}:
    Your function will return the index 3, because at the 3rd position of the array, the sum of left side of the index ({1,2,3}) and the sum of the right side of the index ({3,2,1}) both equal 6.

    Let's look at another one.
    You are given the array {1,100,50,-51,1,1}:
    Your function will return the index 1, because at the 1st position of the array, the sum of left side of the index ({1}) and the sum of the right side of the index ({50,-51,1,1}) both equal 1.

    Note: Please remember that in most programming/scripting languages the index of an array starts at 0.

    Input:

    An integer array of length 0 < arr < 1000. The numbers in the array can be any integer positive or negative.

    Output:

    The lowest index N where the side to the left of N is equal to the side to the right of N. If you do not find an index that fits these rules, then you will return -1.

    Note:

    If you are given an array with multiple answers, return the lowest correct index.

    Example Tests:

    1 Test.describe("FindEvenIndex", function() {
    2   Test.it("Tests", function() {
    3     Test.assertEquals(findEvenIndex([1,2,3,4,3,2,1]),3, "The array was: [1,2,3,4,3,2,1] 
    ");
    4     Test.assertEquals(findEvenIndex([1,100,50,-51,1,1]),1, "The array was: [1,100,50,-51,1,1] 
    ");
    5     Test.assertEquals(findEvenIndex([1,2,3,4,5,6]),-1, "The array was: [1,2,3,4,5,6] 
    ");
    6     Test.assertEquals(findEvenIndex([20,10,30,10,10,15,35]),3, "The array was: [20,10,30,10,10,15,35] 
    ");
    7   });
    8 });

    Solution:

    1 function findEvenIndex(arr) {
    2   var add    = (a, b) => a + b;
    3   var sum    = a => a.reduce(add, 0);
    4   var isEven = (e, i, a) => sum(a.slice(0, i)) === sum(a.slice(i+1));
    5 
    6   return arr.findIndex(isEven);
    7 }
  • 相关阅读:
    Boostrap响应式与非响应式
    Linux文件处理命令
    Linux各目录作用
    linux系统安装
    并发编程之基础( 五)
    Extjs自定义验证介绍
    javascrict中innerhtml和innerText的关系
    List泛型的应用
    winform项目改项目名称
    math.random用法
  • 原文地址:https://www.cnblogs.com/ys-wuhan/p/6249141.html
Copyright © 2011-2022 走看看