文章目录
- [2319. 判断矩阵是否是一个 X 矩阵](https://leetcode.cn/problems/check-if-matrix-is-x-matrix/)
- [599. 两个列表的最小索引总和](https://leetcode.cn/problems/minimum-index-sum-of-two-lists/)
- [674. 最长连续递增序列](https://leetcode.cn/problems/longest-continuous-increasing-subsequence/)
- [989. 数组形式的整数加法](https://leetcode.cn/problems/add-to-array-form-of-integer/)
2319. 判断矩阵是否是一个 X 矩阵
思路:遍历整个二维数组,然后判断这个二维数组的对角线是不是满足条件,如果不是对角线就判断是不是满足等于0,如果一旦发现不满足条件就return false,最后遍历完数组返回true。
class Solution {
public:
bool checkXMatrix(vector<vector<int>>& grid) {
int size = grid.size();
for(int i =0;i<size;i++)
{
for(int j = 0;j<size;j++)
{
if(j==i || (i+j+1)==size)
{
if(grid[i][j]==0) return false;
}
else if(grid[i][j]!=0)
return false;
}
}
return true;
}
};
599. 两个列表的最小索引总和
暴力解法,双for循环
class Solution {
public:
vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
vector<string> str;
int ans = 0,min = 1e6;
for(int i =0;i<list1.size();i++)
{
for(int j = 0;j<list2.size();j++)
{
if(list1[i]==list2[j])
{
ans = i+j;
if(ans<min)
{
min = ans;
str = {list1[i]};
}
else if(ans == min)
{
str.push_back(list1[i]);
}
}
}
}
return str;
}
};
674. 最长连续递增序列
动态规划思想,想要找到最长的连续区间,就需要找到最后一个还是连续的元素的前一个元素的连续长度,+1就是最长的。
const int N = 1e4+10;
int ans[N];
class Solution {
public:
int findLengthOfLCIS(vector<int>& nums) {
int count = 1;
ans[0] = 1;//标记第0个位置一定是连续的,最小就是1.
for(int i = 1;i<nums.size();i++)
{
if(nums[i]>nums[i-1])
{
ans[i] = ans[i-1]+1;//这里的i这里连续的长度等于i-1位置的连续长度+1;
}
else
{
ans[i] = 1;
}
count = max(count,ans[i]);
}
return count;
}
};
989. 数组形式的整数加法
思路:先将数组逆序,数据的低位放在下标较小的地方上,这样可以方便,当原来是三位数字加完之后是四五位数方便进位,进位直接在后面push_back即可,最后还需要再次逆序。
class Solution {
public:
vector<int> addToArrayForm(vector<int>& num, int k) {
int next = k;
reverse(num.begin(),num.end());
for(int i =0;i<num.size();i++)
{
num[i] += next;
if(num[i]>9)
{
next = num[i]/10;
}
else next = 0;
num[i]%=10;
}
while(next>0)
{
num.push_back(next%10);
next/=10;
}
reverse(num.begin(),num.end());
return num;
}
};