每日两题 / 15. 三数之和 73. 矩阵置零(LeetCode热题100)

devtools/2024/9/23 9:29:53/

15. 三数之和 - 力扣(LeetCode)
image.png

先确定一个数t,对于剩下的两个数,要求两数之和为t的负数
三数之和就退化成了两数之和,两数之和可以用双指针
先排序,左右两个指针,指向的数之和大于目标值,则r–,反之l++
两数之和为目标值的组合可能不止一对,所以双指针需要走到l == r时停止
根据题目要求,确定两数之和为目标值后,两个指针都需要跳过相同的数,才能继续走
同时,每次双指针的目标值也不能相同
最后,左指针不能从数组的0下标开始,应该从t的后一位开始。这样就能保证每次枚举的三元组都是从小到大排序,不会出现重复的情况

class Solution {
public:vector<vector<int>> threeSum(vector<int>& nums) {sort(nums.begin(), nums.end());vector<vector<int>> ans;for (int i = 0; i < nums.size(); ++ i){if (i && nums[i] == nums[i - 1]) continue;int l = i + 1, r = nums.size() - 1;int t = -nums[i];while (l < r){if (l == i) { l ++ ; continue; }if (r == i) { r -- ; continue; }if (nums[l] + nums[r] < t) l ++ ;else if (nums[l] + nums[r] > t) r -- ;else {ans.push_back({nums[i], nums[l], nums[r]});l ++ , r -- ;while (l < r && nums[l] == nums[l - 1]) l ++ ;while (l < r && nums[r] == nums[r + 1]) r -- ;}}}return ans;}
};

73. 矩阵置零 - 力扣(LeetCode)
image.png

用两个数组维护哪些行/哪些列出现了0,如果第i行/列出现了0,将第i个元素置0
直接将原数组的第0行的第0列作为这两个数组,此时直接修改第0行/第0列的元素为0不会影响答案
问题是:需要确定第0行/第0列是否已经存在0,若存在则需要将整行/整列置0
所以需要使用bool变量先记录这两个数组是否存在0

class Solution {
public:void setZeroes(vector<vector<int>>& matrix) {int row = matrix.size(), col = matrix[0].size();bool r = false, c = false;for (int i = 0; i < col; ++ i) if (!matrix[0][i])r = true;for (int i = 0; i < row; ++ i)if (!matrix[i][0])c = true;for (int i = 1; i < row; ++ i)for (int j = 1; j < col; ++ j)if (!matrix[i][j])matrix[i][0] = 0, matrix[0][j] = 0;for (int i = 1; i < row; ++ i)for (int j = 1; j < col; ++ j)if (!matrix[i][0] || !matrix[0][j])matrix[i][j] = 0;for (int i = 0; r && i < col; ++ i)matrix[0][i] = 0;for (int i = 0; c && i < row; ++ i)matrix[i][0] = 0;}
};

http://www.ppmy.cn/devtools/4054.html

相关文章

mysql多表查询

目录 多表关系 一对多&#xff08;多对一&#xff09; 多对多 一对一 多表查询概述 什么是多表查询 例子&#xff1a; 多表查询的分类&#xff1a; 连接查询&#xff1a; 子查询&#xff1a; 内连接 内连接查询语法&#xff1a; 隐式内连接&#xff1a; 显示内连…

linux对网络的监控操作学习--端口、流量、IP

文章目录 linux对网络的监控操作学习--端口、流量、IP理解Netfilter队列设置iptables规则以使用队列使用用户空间程序处理队列中的数据包linux用户空间使用Python实现使用rust实现功能 综合应用注意事项其他实现方式nftablesfirewalldufw (Uncomplicated Firewall)tc (Traffic …

如何实现文件上传到阿里云OSS!!!(结合上传pdf使用)

一、开通阿里云OSS对象存储服务 对象存储 OSS_云存储服务_企业数据管理_存储-阿里云阿里云对象存储 OSS 是一款海量、安全、低成本、高可靠的云存储服务&#xff0c;提供 99.995 % 的服务可用性和多种存储类型&#xff0c;适用于数据湖存储&#xff0c;数据迁移&#xff0c;企…

API高频量化交易平台:数字货币市场的革新与挑战

在数字货币市场迅速发展的背景下&#xff0c;越来越多的普通投资者开始将注意力转向高频量化交易&#xff0c;将其视为一种稳定的投资策略。在这一趋势中&#xff0c;API高频量化交易平台&#xff0c;成为了众多投资者的首选。 作为数字货币投资的“闪电猎手”&#xff0c;高频…

美国家安全局等发布安全部署人工智能系统指南

该指南旨在为部署和运行由其他实体设计和开发的人工智能系统的组织提供最佳实践。 2024年4月15日&#xff0c;美国国家安全局发布了名为《安全部署人工智能系统&#xff1a;部署安全、弹性人工智能系统的最佳实践》&#xff0c;该指南旨在为部署和运行由其他实体设计和开发的人…

ArtCoder——通过风格转换生成多元化艺术风格二维码

简介 ArtCoder能够从原始图像&#xff08;内容&#xff09;、目标图像&#xff08;风格&#xff09;以及想要嵌入的信息中&#xff0c;生成具有艺术风格的二维码。这一过程类似于通常的图像风格转换&#xff0c;但特别针对二维码的特点进行了优化和调整。 通过这种方法&#…

2024 CKA 最新 | 基础操作教程(十六)

题目内容 设置配置环境&#xff1a; [candidatenode-1] $ kubectl config use-context wk8s Task 名为 node02 的 Kubernetes worker node 处于 NotReady 状态。 调查发生这种情况的原因&#xff0c;并采取相应的措施将 node 恢复为 Ready 状态&#xff0c;确保所做的任何…

python绝对导入与相对导入(包内导入)(在创建自己的包、模块或系统工程时会用到的知识)

Part 1 我们先上案例&#xff0c;再分析原因。 若在pycharm新建工程&#xff0c;再创立几个文件&#xff0c;文件结构如下图 也就是说&#xff0c;我们在工程下有文件test.py和文件夹p&#xff0c;在p下分别有run.py和tool.py两个文件 一开始&#xff0c;py文件中都为空&…