千山万水总有路,勇敢迈出第一步!!!前路很难,路已过半,何言弃,言何弃
>> 算法的魅力,在于即使,知识你门清,题目给你一闷棍。
<< 有形的代码,被无形算法来回拉扯,翻滚吧,我的脑浆。
今日套餐【ALL 绿】。
休息很重要,全绿利用睡眠 ~ 哈哈哈
先写两个醒醒困劲,晚点再干
~ 热烈祝贺 老坛算粉 Leetcode 破百题 ~
全是绿题 ,表示也撑不住呀,二维数组 - 矩阵,Python *** 作起来六的很,整个 C++ ,尼玛不会了。
语法糖吃多,傻掉了 🤦🤦🤦 人生总有一场旅行,与 C++ 携手,收走就走~
一、吹逼
今日学习内容:https://bbs.csdn.net/topics/605702199
开始脑力训练
今日最 “牛”,1572. 矩阵对角线元素的和 👈 我还是很喜欢,这种小巧的思路,不难,我刚好能消化,而且,觉得蛮过瘾
class Solution {
public:
int diagonalSum(vector>& mat) {
int N = mat.size();
// 正方形二维矩阵 主对角线 i = j 副对角线 i + j = N -1
// 且 N 为奇数时,主副 共有中间元素
int sum = 0;
for(int i = 0; i < N; i++) {
sum += mat[i][i] + mat[i][N-i-1];
}
// 去除奇数时,重复计算的中间元素
// N&1 奇数返回 0.偶数返回 1
// 二进制 偶数最低位 0,奇数最低为 1:0&1 = 0 1&1 = 1
int mid = N/2;
sum -= mat[mid][mid] * (N&1);
return sum;
}
};
二、晒战绩
话不多说,上图~ 👆
三、写解题报告
题解报告,只写让我有
的那道题!
>> 算法的魅力,在于,即使知识你门清,题目给你一闷棍。
<< 有形的代码,被无形算法来回拉扯,翻滚吧,我的脑浆。
766. 托普利茨矩阵:题目理解 → 左上到右下,每一条对角线上元素都相等。
和一维数组类似,但上二维,有点上难度呀,吼
class Solution {
public:
bool isToeplitzMatrix(vector>& matrix) {
int N = matrix.size();
int M = matrix[0].size();
for(int i = 1; i < N; i++) {
for(int j = 1; j < M; j++) {
if(matrix[i][j] != matrix[i-1][j-1]) return false;
}
}
return true;
}
};
1672. 最富有客户的资产总量:题目理解 → 求每行和的最大值
class Solution {
public:
int maximumWealth(vector>& accounts) {
int ans = 0;
int MAX = 0;
for(int i = 0; i < accounts.size(); i++) {
int sum = 0;
for(int j = 0; j < accounts[0].size(); j++) {
sum += accounts[i][j];
}
if(sum > MAX) MAX = sum;
}
return MAX;
}
};
四、睡一觉就会
有些题,脑子不清楚,怎么都觉得自己不会,然鹅,睡一觉,就会了~ 就是这么神奇
冲刷的重要性,不重来,没法成李白(理解地明明白白),哈哈~
463. 岛屿的周长:题目理解 → m*n 面积的岛屿,1 表示陆地,0 表示水域,求陆地范围的周长
PS:题解写的美,可我看不懂,我缝缝补补写了下面的代码 👇
class Solution {
public:
int islandPerimeter(vector>& grid) {
int N = grid.size();
int M = grid[0].size();
int ans = 0;
for(int i=0; i0 && grid[i-1][j] == 0) ans++;
if(i0 && grid[i][j-1] == 0) ans++;
if(j
1582. 二进制矩阵中的特殊位置:题目理解 → m*n 矩阵,元素要么为0要么为1,要是 i 行、j 列所有元素仅 mat[i][j] 为 1 ,则称为特殊位置。
为了汇报我的不放弃不抛弃,你看 程序多懂事。
新知识点 C++ accumulate,想要对 i 行整行求和,用 sum 报错。
csdn 搜索,得到 accumulate,刚好之前曾在 《Effective STL》中看到过 推荐 accumulate 求和,趁机学习和使用一下,accumulate 主要场景:
- accumulate(begin(vec), end(vec), init):将 vec 的 [begin, end) 累加到 初始求和值 init 上
- 数字求和:accumulate(begin(vec), end(vec), 0)
- 字符串拼接:accumulate(begin(vec), end(vec), string(' '))
class Solution {
public:
int numSpecial(vector>& mat) {
int N = mat.size();
int M = mat[0].size();
int ans = 0;
for(int i=0; i
1380. 矩阵中的幸运数:题目理解 → m*n 矩阵,元素各不相同,要是某个元素在行中最小,列中最大,则为幸运数
class Solution {
public:
vector luckyNumbers (vector>& matrix) {
vector ans {};
int N = matrix.size();
int M = matrix[0].size();
for(int i=0; i matrix[i][j]) {
isMax = false;
break;
}
}
// matrix[i][j] 是j列最大
if(isMax) ans.push_back(matrix[i][j]);
}
}
return ans;
}
};
五、写给自己
可以临时放下,但绝不等放过。
成长就是挠头后,灵光一现的灵感 ~ 👈 找到程序员头发少的原因了 🤦🤦🤦
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)