Amazon
  • Introduction
  • Phone Interview I
    • 53.Reverse Words in a String
    • 31.Partition Array
  • Phone Interview II
    • 167.Add Two Numbers
    • 88.Lowest Common Ancestor
  • Onsite I
    • 655.Big Integer Addition
    • 221.Add Two Numbers II
  • Onsite II
    • 158.Two Strings Are Anagrams
    • 171.Anagrams
    • 386.Longest Substring with At Most K Distinct Characters
  • Onsite III
    • 479.Second Max of Array
    • 589.Connecting Graph
  • Onsite IV
    • 532.Reverse Pairs
  • 2022
    • OA
      • work simulation
      • Greyness
      • NearestRetailer
      • Sum of Scores of Subarray
      • StrengthOfPassword
      • ProductOf1
      • Move 0/1 InArray
      • Max deviation among all substrings
      • AWS power consumption
      • searchWordResultWord
      • maxOperationOfString
      • MinHealthGame
      • EarliestMonth
      • Package ship
      • RatingConsectiveDecresing
      • LinkedListSum
      • MovingBoxes
      • ValidString
      • MaxValueAfterRemovingFromString
      • Subtree with Maximum Average
    • VO
      • 2022.3
    • BQ
      • doc
      • 2022.4
      • Freq Question
      • 11大类BQ和Follow-ups
      • Page 1
      • BQ 100
      • 35 behavioral questions asked in 95% of Amazon interviews with examples
      • Page 2
      • 反向BQ
    • LP
      • LP-1
      • LP-2
    • SD
      • Design Amazon Prime Video Recommendation System
      • Amazon Order system
    • OOD
      • Linux Find Command
      • Amazon Locker
    • AWS Identity call
    • Interviews
Powered by GitBook
On this page

Was this helpful?

  1. 2022
  2. OA

RatingConsectiveDecresing

https://leetcode.com/discuss/interview-question/1554594/ama‍‍‌‌‌‌‍‍‌‍‌‍‌‍‌‍‌‌‌‍z

PreviousPackage shipNextLinkedListSum

Last updated 3 years ago

Was this helpful?

There is a new product launched and its customer ratings are being recorded in an array. The ratings are being monitored and analyzed if there is any decrease in the ratings. Find the number of periods in which the rating is consecutively decreasing.

Example - Ratings = [4,3,5,4,3] Periods (in other words sub arrays in which ratings are decreasing): One day periods = [4],[3],[5],[4],[3] (count of subarrays is 5) Two day periods = [4,3],[5,4],[4,3] (count of subarrays is 3) 3 day periods = [5,4,3] (count of subarrays is 1) So, the output for this example will be 9 (5 + 3 + 1)

找到连续下降的长度,他们能成的是(n-1)*n/2; 最后再加上 以1为长度的

public static int periodsOfDecreaseRating(int[] ratings)
    {
        int decreasing = 1;
        int count = 0;
        for(int i = 1; i< ratings.length; i++)
        {
            if(ratings[i]  < ratings[i-1])
            {
                decreasing++;
            }
            else
            {
                count += decreasing*(decreasing-1)/2;
                decreasing = 1;
            }
        }
        // 这种情况就是数组一直在下降
        if(decreasing > 1)
        {
            count += decreasing*(decreasing-1)/2;
        }
        return count + ratings.length;
    }