Произведение значений List

Дан массив nums из n целых чисел, где n> 1, вернуть выходной массив такой, что output [i] равен произведению всех элементов nums, кроме nums [i].

на вход :

nums - массив integers

на выход: массив integers

nums = [3, 5, 1, 4] getResult( nums ) --> [20, 12, 60, 15]

public static List<Integer> getResult(List<Integer> nums) {
       int num = 0;
     
     for (int i = 1; i < nums.size() ; i++){
        if(nums!=1){
           
           int a = nums.get(i)* nums.get(i+1);
           num+=a;
        }
     }
     return num;
    
     }  
     public static void runCode() {
       getResult(nums);

    }
}

Ответы (1 шт):

Автор решения: Aziz Umarov

Потренируйтесь со Stream Api. Получится без в функциональном стиле желаемый результат

public static void main(String[] args) {

    List<Integer> nums = new ArrayList<>();
    nums.add(3);
    nums.add(5);
    nums.add(1);
    nums.add(4);
    Integer product = nums.stream().reduce(1, (item, accumulator) -> accumulator * item);
    List<Integer> result = nums.stream().map(item -> product / item).collect(Collectors.toList());

    result.stream().forEach(System.out::println);
  }

Updated.

public static List<Integer> getResult(List<Integer> nums) {
     List<Integer> result = new ArrayList();

     int num = 1;
     
     for (int i = 0; i < nums.size() ; i++}
           num*=nums.get(i);
        
     }

     for (int i = 0; i < nums.size() ; i++}
           result.add(num/nums.get(i));
        
     }
     return result;
    
     }  
     public static void runCode() {
      List<Integer> result = getResult(nums);

    }
}
→ Ссылка