Problem · Graph

Evaluate an Expression Map

MediumHarveyFULLTIMEONSITE INTERVIEW

You are given symbol definitions in the form name=expression. An expression may contain integer constants, references to previously defined or later defined symbols, and the binary operators +, -, *, and /.

Evaluate the final integer value of every symbol. Return the results in the same order as the input definitions, formatted as "name=value".

If the dependency graph contains a cycle, return a single-element array ["CYCLE"] instead of partial results.

Function Description

Complete the function evaluateExpressionMap in the editor below.

evaluateExpressionMap has the following parameter:

  1. String[] definitions: the symbol definitions

Returns

String[]: evaluated symbol assignments in input order, or ["CYCLE"] if a cycle exists.

Examples
01 · Example 1
definitions = ["a=1", "b=a+2", "c=b*3"]
return = ["a=1", "b=3", "c=9"]

Each symbol depends only on earlier evaluated values, so the map resolves cleanly.

02 · Example 2
definitions = ["a=b+1", "b=a+1"]
return = ["CYCLE"]

The definitions form a cycle, so the special cycle marker is returned.

Constraints
  • 1 <= definitions.length <= 10^5
  • Expressions use integer arithmetic and may reference other symbols.
  • Use cycle detection to avoid infinite recursion.
More Harvey problems
drafts saved locally
public String[] evaluateExpressionMap(String[] definitions) {
    // write your code here
}
definitions["a=1", "b=a+2", "c=b*3"]
expected["a=1", "b=3", "c=9"]
sign in to submit