Skip to content

Prepare For Coder Interview – Denny

  • Basic
  • Medium
  • Hard
  • Architect
  • Life

LeetCode: Maximum Width Ramp

Posted on June 18, 2019July 26, 2020 by braindenny

Maximum Width Ramp



Similar Problems:

  • CheatSheet: Leetcode For Code Interview
  • CheatSheet: Common Code Problems & Follow-ups
  • Tag: #binarysearch, #monotone

Given an array A of integers, a ramp is a tuple (i, j) for which i < j and A[i] <= A[j]. The width of such a ramp is j – i.

Find the maximum width of a ramp in A. If one doesn’t exist, return 0.

Example 1:

Input: [6,0,8,2,1,5]
Output: 4
Explanation: 
The maximum width ramp is achieved at (i, j) = (1, 5): A[1] = 0 and A[5] = 5.

Example 2:

Input: [9,8,1,0,1,9,4,0,4,1]
Output: 7
Explanation: 
The maximum width ramp is achieved at (i, j) = (2, 9): A[2] = 1 and A[9] = 1.

Note:

  1. 2 <= A.length <= 50000
  2. 0 <= A[i] <= 50000

Github: code.dennyzhang.com

Credits To: leetcode.com

Leave me comments, if you have better ways to solve.


  • Solution:
// https://code.dennyzhang.com/maximum-width-ramp
// Basic Ideas: monotone stack + binarysearch
//
//   For each j, find i.
//     Value vs location
//
// Complexity: Time O(n*log(n)), Space O(n)
func maxWidthRamp(A []int) int {
    res := 0
    stack := []int{}
    for i, v := range A {
        if len(stack) == 0 || A[stack[len(stack)-1]] > v {
            stack = append(stack, i)
        }
        left, right := 0, len(stack)-1
        // F, F, F, T, T, T
        for left<right {
            mid := (right-left)/2+left
            if A[stack[mid]] <= v {
                right = mid
            } else {
                left = mid+1
            }
        }
        if i-stack[left] > res {
            res = i-stack[left]
        }
    }
    return res
}
linkedin
github
slack

Post Views: 0
Posted in BasicTagged binarysearch, monotone

Post navigation

LeetCode: Previous Permutation With One Swap
LeetCode: Split Array Largest Sum

Leave a Reply Cancel reply

Your email address will not be published.

Tags

#array #backtracking #bfs #binarytree #bitmanipulation #blog #classic #codetemplate #combination #dfs #dynamicprogramming #game #graph #greedy #heap #inspiring #interval #linkedlist #manydetails #math #palindrome #recursive #slidingwindow #stack #string #subarray #trie #twopointer #twosum binarysearch editdistance hashmap intervaldp knapsack monotone oodesign presum rectangle redo review rotatelist series sql treetraversal unionfind

Recent Posts

  • a
  • a
  • a
  • a
  • a

Recent Comments

    Archives

    Categories

    • Amusing
    • Basic
    • Easy
    • Hard
    • Life
    • Medium
    • Resource
    • Review
    • Series
    • Uncategorized
    Proudly powered by WordPress | Theme: petals by Aurorum.