对于n个元素,有正有负,输出最大的连续的子数组
vector<int> findMaxSubstr(vector<int> arr) { vector<int> result; int n = arr.size(); if (n == 0) return result; if (n == 1) { result.push_back(arr[0]); return result; } result.push_back(-1); cout << "push进去一个负数" << endl; arr.push_back(-1); n++; vector<int> temp; for (int i = 0; i < n; i++) { if (arr[i] == 0 && temp.size() == 0) continue; if (arr[i] >= 0) { temp.push_back(arr[i]); } else//当arr是负数时 { cout << "遇到负数" << endl; for (int k = 0; k < temp.size(); k++) cout << temp[k] << " "; cout << endl; if (temp.size() > result.size()) { result.clear(); result.assign(temp.begin(), temp.end()); } if (temp.size() == result.size()) { //cout << "遇到长度相同的子串:" << endl; int p = 0, q = 0; while (p < temp.size() && temp[p]==result[q]) { p++; q++; } if (p != temp.size()&&temp[p]>result[q]) { result.clear(); result.assign(temp.begin(), temp.end()); } } temp.clear(); } } return result; } int main() { vector<int> arr = {1}; vector<int> result = findMaxSubstr(arr); for (int i = 0; i < result.size(); i++) cout << result[i] << " "; cout << endl; return 0; }