Exemplo n.º 1
0
void
AbstractGraphicsItem::resize( qint64 newSize, qint64 newMovingBoundary,
                              qint64 currentStillBoundary, From from )
{
    if ( newSize < 1 )
    {
//        if ( from == END )
//            setStartPos( currentStillBoundary - 1 );
//        setWidth( 1 );
        return ;
    }

    qint64      maxSize = maxEnd() - maxBegin();
    //The "from" actually stands for the clip bound that stays still.
    if ( from == BEGINNING )
    {
        if ( hasResizeBoundaries() == true )
        {
            qint64      beginOffset = begin() - maxBegin();
            qint64      absoluteStartPos = currentStillBoundary - beginOffset;
            if ( absoluteStartPos + maxSize < newMovingBoundary )
            {
                setWidth( maxSize - beginOffset );
                return ;
            }
        }
        setWidth( newSize );
    }
    else
    {
        if ( newMovingBoundary < 0 )
            return ;
        if ( hasResizeBoundaries() == true )
        {
            qint64      endOffset = maxEnd() - end();
            qint64      absoluteEnd = currentStillBoundary + endOffset;
            if ( newMovingBoundary < absoluteEnd - maxSize )
            {
//                qint64  size = end() - begin();
//                setWidth( size );
//                setStartPos( currentStillBoundary - size );
                return ;
            }
        }
        setWidth( newSize );
        setStartPos( newMovingBoundary );
    }
}
Exemplo n.º 2
0
 int wiggleMaxLength(vector<int>& nums) {
     if (nums.empty())
         return 0;
     int n = nums.size();
     vector<int> maxEnd(n, 1), minEnd(n, 1);
     for (int i = 1; i < nums.size(); i++) {
         for (int j = i - 1; j >= 0; j--) {
             if (nums[i] > nums[j] && minEnd[j] + 1 > maxEnd[i]) {
                 maxEnd[i] = minEnd[j] + 1;
             }
             if (nums[i] < nums[j] && maxEnd[j] + 1 > minEnd[i]) {
                 minEnd[i] = maxEnd[j] + 1;
             }
         }
     }
     return maxEnd[n-1] > minEnd[n-1]? maxEnd[n-1] : minEnd[n-1];
 }