Java Array Max Value maxFloorDiv(int c, int... vals)

Here you can find the source of maxFloorDiv(int c, int... vals)

Description

max Floor Div

License

Open Source License

Parameter

Parameter Description
c != 0
vals different from 0

Return

max(floor(c/v)) with v in vals

Declaration

public static int maxFloorDiv(int c, int... vals) 

Method Source Code

//package com.java2s;
/*******************************************************************************
 * OscaR is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 2.1 of the License, or
 * (at your option) any later version./*w  ww  .j av  a2  s.  co m*/
 *   
 * OscaR is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License  for more details.
 *   
 * You should have received a copy of the GNU Lesser General Public License along with OscaR.
 * If not, see http://www.gnu.org/licenses/lgpl-3.0.en.html
 ******************************************************************************/

public class Main {
    /**
     * @param c != 0
     * @param vals different from 0
     * @return max(floor(c/v)) with v in vals
     */
    public static int maxFloorDiv(int c, int... vals) {
        assert (vals.length > 0);
        assert (vals[0] != 0);
        int res = Integer.MIN_VALUE;
        for (int i = 0; i < vals.length; i++) {
            assert (vals[i] != 0);
            int tmp = floorDiv(c, vals[i]);
            if (tmp > res)
                res = tmp;
        }
        return res;
    }

    /**
     * @param v1
     * @param v2 != 0
     * @return floor(v1/v2)
     */
    public static int floorDiv(int v1, int v2) {
        return v1 / v2
                - (((v1 % v2 != 0) && negativeProduct(v1, v2)) ? 1 : 0);
    }

    public static boolean negativeProduct(int v1, int v2) {
        return (v2 < 0 ^ v1 < 0) && (v1 != 0 && v2 != 0);
    }
}

Related

  1. maxElement(double[] d)
  2. maxElement(int[] array)
  3. maxElementIndex(final double[] array)
  4. maxElementIndex(final double[] array)
  5. maxElementIndex(final double[] array, final int endIndex)
  6. maxFromDoubleArray(double[] arr)
  7. maxIdx(int[] in)
  8. maximum(double[] list)
  9. maximum(float[] array)