Counting Valleys

Sort by

recency

|

193 Discussions

|

  • + 0 comments

    Using Python:

    def countingValleys(steps, path):
        altitude = 0
        nValleys = 0
        for i in range(steps):
            step = path[i]
            if step == "U":
                altitude += 1
            else:
                altitude -=1
            if altitude == 0:
                if step == "U":
                    nValleys += 1
        return nValleys
            
    
  • + 0 comments
    public static int countingValleys(int steps, String path) {
    // Write your code here
        int step =0;
        int count = 0;
        for(int i = 0; i < path.length(); i++){
            if(path.charAt(i) == 'U'){
                step++;
            }else if(path.charAt(i) == 'D'){
                if(step == 0){
                   count++; 
                }
                step--;
            }
        }
        return count;
    }
    
  • + 0 comments

    This is my java code which is easy to understand.

    public static int countingValleys(int steps, String path) {
            int valleyCount = 0;
            
            boolean valleyEntered = false;
            int level = 0;
            for(int i=0; i<steps; i++){
                if(path.charAt(i)== 'U') level++;
                else level--;
                
                if(level < 0) valleyEntered = true;
                if(valleyEntered == true && level == 0){
                    valleyCount++;
                    valleyEntered = false;
                }
            }
            return valleyCount;
        }
    
  • + 0 comments

    My Java solution:

     public static int countingValleys(int steps, String path) {
            int  currentLevel    = 0;
            char down            = 'D';
            int  numberOfValleys = 0;
    
            for (Character c : path.toCharArray()) {
                int step = c == down ? -1 : 1;
                if (currentLevel < 0 && (currentLevel + step) == 0) {
                    numberOfValleys++;
                }
                currentLevel += step;
            }
            return numberOfValleys;
        }
    
  • + 0 comments

    My Java solution:

    public static int countingValleys(int steps, String path) { int currentLevel = 0; char down = 'D'; int numberOfValleys = 0;

        for (Character c : path.toCharArray()) {
            int step = c == down ? -1 : 1;
            if (currentLevel < 0 && (currentLevel + step) == 0) {
                numberOfValleys++;
            }
            currentLevel += step;
        }
        return numberOfValleys;
    }