[学习报告]《LeetCode零基础指南》(第七讲) 二维数组

使用accumulate对数组求和 1.C++数组求和 vector<int> nums{1,2,3,4,5}; int sum = accumulate(nums.begin(),nums.end(),0); accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。 accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate算法返回累加的结果,其返回类型就是其第三个实参的类型。 如上述代码返回结果为0+1+2+3+4+5的值 阅读详情

 千山万水总有路,勇敢迈出第一步!!!前路很难,路已过半,何言弃,言何弃
>> 算法的魅力,在于即使,知识你门清,题目给你一闷棍。
<< 有形的代码,被无形算法来回拉扯,翻滚吧,我的脑浆。

今日套餐【ALL 绿】。休息很重要,全绿利用睡眠 ~ 哈哈哈
先写两个醒醒困劲,晚点再干
~ 热烈祝贺 老坛算粉 Leetcode 破百题 ~ 

全是绿题 ,表示也撑不住呀,二维数组 - 矩阵,Python 操作起来六的很,整个 C++ ,尼玛不会了。语法糖吃多,傻掉了 🤦‍🤦‍🤦‍ 人生总有一场旅行,与 C++ 携手,收走就走~ 

一、吹逼

今日学习内容:https://bbs.youkuaiyun.com/topics/605702199
开始脑力训练

今日最 “牛”,1572. 矩阵对角线元素的和 👈  我还是很喜欢,这种小巧的思路,不难,我刚好能消化,而且,觉得蛮过瘾

class Solution {
public:
    int diagonalSum(vector<vector<int>>& 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<vector<int>>& 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<vector<int>>& 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<vector<int>>& grid) {
        int N = grid.size();
        int M = grid[0].size();

        int ans = 0;
        for(int i=0; i<N; i++) {
            for(int j=0; j<M; j++) {
                // 如果当前是陆地,贡献的周长
                //      边界 + 1  临水 + 1
                if(grid[i][j]) {
                    // 判断边界和上下方向
                    if(i==0) ans ++;
                    if(i==N-1) ans ++;
                    if(i>0 && grid[i-1][j] == 0) ans++;
                    if(i<N-1 && grid[i+1][j] == 0) ans++;
                    // 判断边界和左右方向
                    if(j==0) ans ++;
                    if(j==M-1) ans ++;
                    if(j>0 && grid[i][j-1] == 0) ans++;
                    if(j<M-1 && grid[i][j+1] == 0) ans++;
                }
            }
        }

        return ans;
    }
};

1582. 二进制矩阵中的特殊位置:题目理解 → m*n 矩阵,元素要么为0要么为1,要是 i 行、j 列所有元素仅 mat[i][j]  为 1 ,则称为特殊位置。

为了汇报我的不放弃不抛弃,你看 程序多懂事。

 新知识点 C++ accumulate,想要对 i 行整行求和,用 sum 报错。csdn 搜索,得到 accumulate,刚好之前曾在 《Effective STL》中看到过 推荐 accumulate 求和,趁机学习和使用一下,accumulate 主要场景:

  1. accumulate(begin(vec), end(vec), init):将 vec 的 [begin, end) 累加到 初始求和值 init 上
  2. 数字求和:accumulate(begin(vec), end(vec), 0)  
  3. 字符串拼接:accumulate(begin(vec), end(vec), string(' '))  
class Solution {
public:
    int numSpecial(vector<vector<int>>& mat) {
        int N = mat.size();
        int M = mat[0].size();

        int ans = 0;
        for(int i=0; i<N; i++) {
            for(int j=0; j<M; j++) {
                if(mat[i][j] == 0) continue;
                
                // 验证 mat[i][j] 是 i 行 或 j 列中唯一的 1
                // 验证 i 行,直接求和 等于 1即可
                int s1 = accumulate(begin(mat[i]), end(mat[i]), 0);
                if(s1 != 1) break;

                // 验证 j 列,求和 等于 1
                int s2 = 0;
                for(int k=0; k<N; k++) s2 += mat[k][j];

                if(s2==1) ans++;
            }
        }

        return ans;
    }
};

1380. 矩阵中的幸运数:题目理解 → m*n 矩阵,元素各不相同,要是某个元素在行中最小,列中最大,则为幸运数

class Solution {
public:
    vector<int> luckyNumbers (vector<vector<int>>& matrix) {
        vector<int> ans {};
        int N = matrix.size();
        int M = matrix[0].size();
        for(int i=0; i<N; i++) {
            for(int j=0; j<M; j++) {
                // matrix[i][j]
                bool isMin = true;
                bool isMax = true;
                // 验证 i 行中 matrix[i][j] 最小
                for(int k=0; k<M; k++) {
                   if(matrix[i][k] < matrix[i][j]) {
                       isMin = false;
                       break;
                   } 
                }
                // matrix[i][j] 不是i行最小,就继续验证下一个元素
                if(!isMin) continue;
                
                // 验证 j 列中 matrix[i][j] 最大
                for(int k=0; k<N; k++) {
                   if(matrix[k][j] > matrix[i][j]) {
                       isMax = false;
                       break;
                   } 
                }

                // matrix[i][j] 是j列最大
                if(isMax) ans.push_back(matrix[i][j]);
            }
        }
        return ans;
    }
};

五、写给自己

可以临时放下,但绝不等放过。成长就是挠头后,灵光一现的灵感 ~ 👈 找到程序员头发少的原因了 🤦‍🤦‍🤦‍

《LeetCode零基础指南》(第七讲) 二维数组 二维数组 即 矩阵 阅读详情

相关推荐

《LeetCode零基础指南》(第八讲) 二级指针

遇事不决就枚举

英雄哪里出来 5930

leetcode常用函数

1. 求容器内所有元素之和 使用numeric中的accumulate函数进行求和。 #include <numeric> accumulate(v.begin(), v.end(), 0); accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。 如可以使用accumulate把string型的vector容器中的元素连接起来: string sum = accumulate(v.begin() , v.end() , string(" "));

Yannie's Blog 985

《LeetCode零基础指南》(第十一讲) 遇到不会的题怎么办?

遇到不会的题千万不要放弃,要找方法突破

英雄哪里出来 3906

c++数组求和函数 accumulate()

c++数组求和函数 accumulate(),包含头文件 algorithm accumulate(起始地址,末尾地址+1,初始值); 初始值就是数组相加之后加上的值accumulate(起始地址,末尾地址+1,初始值);包含头文件 algorithm。初始值就是数组相加之后加上的值。初始值如果是1 那么输出56。

weixin_52115456的博客 7332

《LeetCode零基础指南》(第十讲) 力扣常见报错集锦

常见错误集锦 和 排查手段

英雄哪里出来 2652

Qt实战:用QCustomPlot实现毫秒级时间轴数据动态刷新(附完整代码)

本文深入探讨了在Qt框架下,如何利用QCustomPlot库高效实现毫秒级时间轴数据的动态刷新与实时可视化。针对工业物联网等高频数据场景,文章提供了从原理剖析、核心代码实现到性能优化的完整实战指南,包括滑动窗口管理、双定时器策略及坐标轴精确配置,帮助开发者构建稳定、流畅的专业级监控界面。

qsc90123456的博客 758

二维数组及二维数组求和

二维数组及二维数组求和 1.二维数组的定义格式 int [][] nums =new int[3][4];//定义了一个长度为3,即三个一维数组,这三个一维数组的长度都为4 int[][]nums = new int[3][];//这种定义方法只定义了二维数组的长度,没有确定每个数组的元素个数 int[][]nums ={{30,35},{11,23,13,24},{25,21,31}};//这种定义方法直接给数组中的元素赋值 2.二维数组求和 public class Demo { pu

掉进大海里的狗 1万+

基于STM32 HAL库的L298N四驱电机PWM调速与方向控制实战

本文详细介绍了基于STM32 HAL库驱动L298N电机控制板实现四驱小车PWM调速与方向控制的实战方法。涵盖硬件连接、GPIO与定时器配置、PWM生成、方向控制逻辑及电源管理等核心内容,并提供代码优化与常见问题解决方案,帮助开发者快速实现高效稳定的电机控制。

jump7的博客 222

#随想录 C++中accumulate()函数的使用

#include<numeric> // accumulate定义的头文件 accumulate(); 作用: 累加求和 or 自定义类型数据的处理 一、累加求和 #include<numeric> // accumulate定义的头文件 vector<int> res; // 数值 int sum; sum = accumulate(res.begin(), res.end(), 0); accumulate 包含三个形参,[res.begin(), res.end

白凡轩 1626

FlashBootloader01-基于UDS的Flash Bootloader【架构篇】

文章目录1 Flash Bootloader的依赖项2 Flash Bootloader中使用的UDS的主要功能3 Flash Bootloader更新固件3.1 初始化MCU3.2 刷写流程 1 Flash Bootloader的依赖项 通常Flash Bootloader由以下四方面组成: UDS协议 上位机「编写Bootloader Sequence」 通信驱动(如CAN ) Flash Driver 2 Flash Bootloader中使用的UDS的主要功能 1. 10 02服务 客户端

3591

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案

本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案

weixin_43178406的博客 10万+

【学习报告】《LeetCode零基础指南》(第七讲) 二维数组

《九日集训》第七天,过啦!

m0_54789378的博客 419

反应堆设计:基于MATLAB的反应堆仿真和分析,包括反应堆稳态分析、反应堆动态分析和反应堆安全分析 介绍

反应堆设计是利用计算机技术对核反应堆进行设计和模拟,以获得安全、高效、经济的核能发电系统。它是核能领域的重要组成部分,在电力生产、核医学、科学研究等领域有着广泛的应用。

走向CTO的路上... 1112

【学习报告】《LeetCode零基础指南》(第七讲)二维数组

二维数组

Disco’s Blog 217

Python爬虫实战:利用Selenium与Playwright抓取美团外卖数据

在当今大数据时代,网络数据采集已成为商业分析和市场研究的重要手段。本文以美团外卖平台为例,详细介绍如何使用Python最新爬虫技术(Selenium、Playwright)进行数据采集,并探讨相关技术原理、反爬应对策略及数据存储方案。通过5000+字的详细讲解和完整代码示例,帮助读者掌握现代网络爬虫开发的核心技能。本文详细介绍了使用Python最新爬虫技术采集美团外卖数据的完整流程,涵盖了从环境配置、页面分析到数据存储的全链路解决方案。

2201_76125261的博客 2550

lammps教程:官方自带eam_database程序拟合EAM势方法介绍

使用lammps模拟金属体系,最常用的势函数为eam、meam势。 对于大多数金属或者合金来说,可以从网上下载相对应的eam或meam势力场文件。 而对于一些新的合金材料,可能就找不到相对应的力场文件。 解决的方法有两种,一是采用混合势(pair_style hybrid),第二种方法是自己拟合势函数文件。 混合势的写法在前面文章中已经介绍过,本文介绍一种拟合EAM势的方法。 该方法是运行Xiaowang Zhou编写的一个拟合程序,该程序可自动生成所需要的合金势。 这个程序能够拟合的合金元素有: Cu,

lammps_jiayou的博客 4617

【解题报告】《LeetCode零基础指南》(第八讲) 二维数组

☘前言☘ 今天是九日集训第七天,我会记录一下学习内容和题解,争当课代表0.0. 链接:《LeetCode零基础指南》(第八讲) 二维数组 ????????作者简介:一个从工业设计改行学嵌入式的年轻人 ✨联系方式:2201891280(QQ) ⏳全文大约阅读时间: 20min 全文目录☘前言☘????主要知识点梳理????1.矩阵的定义????2.矩阵的水平翻转????3.矩阵的垂直翻转????4.矩阵的顺时针旋转????5.矩阵的逆时针旋转????6.矩阵的逆时针转置????7.二维数组的函数传参??

XingleiGao的博客 837

潇洒郎: 小白一次性成功——红米 Note 12 5G Android12 系统13.0.16/14.0.9 小米红米手机解BL锁+ROOT-刷面具—官方ROM下载-线刷降级—解锁system系统分区

小白一次性成功——红米 Note 12 5G Android12 系统13.0.16/14.0.9 小米红米手机解BL锁+ROOT-刷面具—官方ROM下载-线刷降级—解锁system系统分区

潇洒郎的博客 4585

[学习报告]《LeetCode零基础指南》(第八讲) 二维数组

《LeetCode零基础指南》(第八讲) 二维数组_英雄哪里出来-优快云博客 实在是太困了就把图片先发出来。然后达拉睡觉了。今天的题有点绕。但是多思考一会儿就可明白题意了。 写完打卡昨天的算法零基础忘记打卡了,还是记忆力不太好,想晚上在打卡的结果忘了。 大家晚安了。 ...

m0_60567369的博客 276

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

《LeetCode零基础指南》九日集训题解汇总

我汇总了我这九天发的集训题解,欢迎大家交流讨论

夜阑听雨的博客 5657

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[学习报告]《LeetCode零基础指南》(第8讲)二级指针

[学习报告]《LeetCode零基础指南》(第8讲)二级指针 一、今日知识点总结 学习内容:https://blog.youkuaiyun.com/WhereIsHeroFrom/article/details/120875692 1 二级指针 1.1 二级指针是啥? 首先,他是变量,一个指向指针的指针,通过 & 获取它的地址 指针,是指向某个变量的地址;存储着某个基本数据变量的地址;那么这个指针,有他自己的地址。 二级指针,则是指向某个指针的地址;存储着某个指针的变量的地址 int a =10; int

写代码的仓颉 997

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

力扣热题——转换二维数组

哈希表秒杀题,你还记得C++和Java怎么操作map集合吗?哈哈哈哈哈哈

WenJGo的博客 997
上一篇: 【LeetCode】题解 - nSumTarget 问题
下一篇: [学习报告]《LeetCode零基础指南》(第八讲) 二级指针
老坛算粉
博客等级 码龄12年 708粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老坛算粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值