Start learning free

LESSON 145 OF 410 · LOOPS & GLOBAL VARIABLES

Maximum Value in Array in Java (Time Complexity: O(n))

Practice Read the full explanation

Given an array of integers, return the maximum value from the array.

Example:

Input: nums = [2, 7, 11, 8, 11, 8, 3, 11]
Output: 11
Explanation: The maximum value is 11

Note:

Do not use builtin functions such as Math.max(), it would defy the purpose of the challenge. Write the whole code yourself.

STEP 1 OF 4
    Ctrl + Enter to check

    JAVA · LOOPS & GLOBAL VARIABLES

    Max In Array in Java, explained

    Understanding the Problem

    The core challenge of this problem is to find the maximum value in an array without using any built-in functions. This is a common problem in computer science and has applications in various fields such as data analysis, statistics, and more. A potential pitfall is assuming that the array is sorted or contains unique values, which is not necessarily the case.

    Approach

    To solve this problem, we need to iterate through the array and keep track of the maximum value encountered so far. This approach ensures that we examine each element exactly once, making it efficient.

    Naive Solution

    A naive solution might involve comparing each element with every other element, but this would result in a time complexity of O(n^2), which is not optimal.

    Optimized Solution

    The optimized solution involves a single pass through the array, maintaining a variable to store the maximum value found so far. This approach has a time complexity of O(n), where n is the number of elements in the array.

    Algorithm

    1. Initialize a variable maxValue to the first element of the array.

    2. Iterate through the array starting from the second element.

    3. For each element, compare it with maxValue. If it is greater, update maxValue.

    4. After completing the iteration, maxValue will hold the maximum value in the array.

    Code Implementation

    public class MaximumValueInArray {
        public static int findMax(int[] nums) {
            // Initialize maxValue to the first element of the array
            int maxValue = nums[0];
            
            // Iterate through the array starting from the second element
            for (int i = 1; i < nums.length; i++) {
                // Update maxValue if the current element is greater
                if (nums[i] > maxValue) {
                    maxValue = nums[i];
                }
            }
            
            // Return the maximum value found
            return maxValue;
        }
    
        public static void main(String[] args) {
            int[] nums = {2, 7, 11, 8, 11, 8, 3, 11};
            System.out.println("The maximum value is: " + findMax(nums)); // Output: 11
        }
    }
    

    Complexity Analysis

    The time complexity of this approach is O(n) because we only make a single pass through the array. The space complexity is O(1) as we are using a constant amount of extra space.

    Edge Cases

    1. An array with a single element: The function should return that element.

    2. An array with all identical elements: The function should return that element.

    3. An array with negative numbers: The function should correctly identify the maximum value even if it is negative.

    Testing

    To test the solution comprehensively, consider the following test cases:

    • Single element array: [5] should return 5.
    • All identical elements: [3, 3, 3] should return 3.
    • Array with negative numbers: [-1, -2, -3] should return -1.
    • Mixed positive and negative numbers: [1, -2, 3, -4, 5] should return 5.

    Thinking and Problem-Solving Tips

    When approaching such problems, it is crucial to:

    • Understand the problem requirements and constraints.
    • Think about the most efficient way to solve the problem.
    • Break down the problem into smaller, manageable steps.
    • Consider edge cases and how your solution handles them.

    Conclusion

    Finding the maximum value in an array is a fundamental problem that helps in understanding basic algorithmic concepts. By practicing such problems, you can improve your problem-solving skills and prepare for more complex challenges.

    Additional Resources

    For further reading and practice, consider the following resources:

    Keep going with JavaAbout 340 step-by-step lessons, from your first line of code to coding interviews. Free to start.
    Start learning free