Exemplo n.º 1
0
 int canCompleteCircuit(vector<int> &gas, vector<int> &cost) {
     // write your code here
     
     // pick one choice
     for(int i=0; i<gas.size(); i++) {
         if(gas[i] >= cost[i]) {
             if(canComplete(gas, cost, i)) {
                 return i;
             }
         }
     }
     return -1;
 }
bool CompletableTextEdit::complete(QAbstractItemModel* _model, const QString& _completionPrefix)
{
	bool success = false;

	if (m_useCompleter && canComplete()) {
		if (_model != 0) {
			//
			// Настроим завершателя, если необходимо
			//
			bool settedNewModel = m_completer->model() != _model;
			bool oldModelWasChanged = false;
			if (!settedNewModel
				&& _model != 0) {
				oldModelWasChanged = m_completer->model()->rowCount() == _model->rowCount();
			}

			if (settedNewModel
				|| oldModelWasChanged) {
				m_completer->setModel(_model);
				m_completer->setModelSorting(QCompleter::UnsortedModel);
				m_completer->setCaseSensitivity(Qt::CaseInsensitive);
			}
			m_completer->setCompletionPrefix(_completionPrefix);

			//
			// Если в модели для дополнения есть элементы
			//
			bool hasCompletions = m_completer->completionModel()->rowCount() > 0;
			bool alreadyComplete = _completionPrefix.toLower().endsWith(m_completer->currentCompletion().toLower());

			if (hasCompletions
				&& !alreadyComplete) {
				m_completer->popup()->setCurrentIndex(
							m_completer->completionModel()->index(0, 0));

				//
				// ... отобразим завершателя
				//
				QRect rect = cursorRect();
				rect.moveTo(mapToGlobal(viewport()->mapToParent(rect.topLeft())));
				rect.moveLeft(rect.left() + verticalScrollBar()->width());
				rect.moveTop(rect.top() + QFontMetricsF(currentCharFormat().font()).height());
				rect.setWidth(
							m_completer->popup()->sizeHintForColumn(0)
							+ m_completer->popup()->verticalScrollBar()->sizeHint().width());

				MyCompleter* myCompleter = static_cast<MyCompleter*>(m_completer);
				myCompleter->completeReimpl(rect);

				success = true;
			}
		}

		if (!success) {
			//
			// ... скроем, если был отображён
			//
			closeCompleter();
		}
	}

	return success;
}