창고 --- 주식 일 일 가격

2048 단어 알고리즘
  • 제목 은 StockSpanner 류 를 작성 하여 일부 주식 의 매일 가격 을 수집 하고 이 주식 의 당일 가격 의 경 계 를 되 돌려 줍 니 다.일부 주식 의 매일 가격 을 수집 하고 당일 가격 의 경 계 를 되 돌려 주 는 Stock Spanner 류 를 만 듭 니 다.오늘 주식 가격 의 경 계 는 주식 가격 이 오늘 가격 보다 작 거나 같은 최대 연속 일수 로 정의 된다.예 를 들 어 앞으로 7 일 동안 주식 의 가격 이 [100, 80, 60, 70, 60, 75, 85] 라면 주식 의 경 계 는 [1, 1, 1, 2, 1, 4, 6] 이 될 것 이다.
  • 예시
  •   :["StockSpanner","next","next","next","next","next","next","next"],
     [[],[100],[80],[60],[70],[60],[75],[85]]
      :[null,1,1,1,2,1,4,6]
      :
      ,    S = StockSpanner(),  :
    S.next(100)        1,
    S.next(80)        1,
    S.next(60)        1,
    S.next(70)        2,
    S.next(60)        1,
    S.next(75)        4,
    S.next(85)        6。
    
       (  ) S.next(75)    4,          4    
    (        75)           。
    
  • StockSpanner. next (int price) 를 호출 할 때 1 < = price < = 10 ^ 5 가 있 음 을 알려 줍 니 다.각 테스트 용례 는 최대 10000 회 StockSpanner. next 를 호출 할 수 있 습 니 다.모든 테스트 용례 에서 최대 15000 회 StockSpanner. next 를 호출 합 니 다.이 문제 의 총 시간 제한 이 50 퍼센트 감소 했다.
  • 코드 실현 사고: 스 택 꼭대기 요소 의 최소 증가 순 서 를 유지 합 니 다.현재 주식 가격 과 스 택 톱 요 소 를 비교 하면 스 택 톱 요소 보다 높 으 면 현재 스 택 톱 요소 의 가격 범위 (이미 비교 한 것 은 중복 비교 하지 마 세 요) 를 더 해서 스 택 톱 요 소 를 팝 업 하여 다음 을 계속 비교 할 수 있 습 니 다.
  • import java.util.Stack;
    
    class StockSpanner {
    
        private Stack stack = new Stack<>();
    
        public StockSpanner() {
        }
    
        public int next(int price) {
            int count = 1;
            while (!stack.empty()&&price>=stack.peek().price){
                StackElemnet top = stack.pop();
                count +=top.count;
            }
            StackElemnet stackElemnet = new StackElemnet();
            stackElemnet.price = price;
            stackElemnet.count =count;
            stack.push(stackElemnet);
            return count;
        }
    }
    
    class StackElemnet{
        int price;
        int count;
    }
    
    /**
     * Your StockSpanner object will be instantiated and called as such:
     * StockSpanner obj = new StockSpanner();
     * int param_1 = obj.next(price);
     */
    

    좋은 웹페이지 즐겨찾기