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; }