intmaxSubArray(vector<int>& nums){ int res = nums[0]; int dp = nums[0]; for (int i = 1; i < nums.size(); i++) { dp = max(dp + nums[i], nums[i]); res = dp > res ? dp : res; } return res; }
动态规划让我觉得自己是渣渣。
题目描述
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
vector<int> spiralOrder(vector<vector<int>>& matrix) { int m = matrix.size(); if (!m)return {}; int n = matrix[0].size(); if (!n)return {}; vector<int> res = {};
int i = 0, j = 0; int base_i = 0, base_j = 0;
while (true) { while (j < n) { res.push_back(matrix[i][j]); j++; } j = n - 1; base_i++; if (base_i == m)break; i = base_i; while (i < m) { res.push_back(matrix[i][j]); i++; } i = m - 1; n--; if (n == base_j)break; j = n - 1; while (j >= base_j) { res.push_back(matrix[i][j]); j--; } j = base_j; m--; if (base_i == m)break; i = m - 1; while (i >= base_i) { res.push_back(matrix[i][j]); i--; } i = base_i; base_j++; if (base_j == n)break; j = base_j; } return res; }