力扣题目训练(13)

2024年2月6日力扣题目训练

  • 2024年2月6日力扣题目训练
    • 492. 构造矩形
    • 495. 提莫攻击
    • 500. 键盘行
    • 166. 分数到小数
    • 199. 二叉树的右视图
    • 85. 最大矩形

2024年2月6日力扣题目训练

2024年2月6日第十三天编程训练,今天主要是进行一些题训练,包括简单题3道、中等题2道和困难题1道。惰性太强现在才完成,不过之后我会认真完成的。

492. 构造矩形

链接: 构造矩形
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题本质就是暴力求解,但是注意要L和W之间差不多肯定是在平方根附近。
代码:

class Solution {
public:vector<int> constructRectangle(int area) {int W = sqrt(area);int L = area/W;vector<int> ans;while(L >= W){if(L * W == area){ans.push_back(L);ans.push_back(W);break;}W--;L = area / W;}return ans;}
};

495. 提莫攻击

链接: 提莫攻击
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:
这道题可以单次扫描,在扫描过程中注意两次中毒是否有交集,有的话需要单独处理。
代码:

class Solution {
public:int findPoisonedDuration(vector<int>& timeSeries, int duration) {int ans = 0;if(timeSeries.size() == 0) return 0;int left = timeSeries[0],right = left+duration-1;ans += duration;for(int i = 1; i < timeSeries.size(); i++){if(timeSeries[i] <= right){ans += timeSeries[i]+ duration-1-right;}else{ans += duration;}left = timeSeries[i];right = timeSeries[i]+ duration-1;}return ans;}
};

500. 键盘行

链接: 键盘行
难度: 简单
题目:
题目描述

运行示例:
运行示例

思路:

这道题其实就是单次扫描,为了方便,我们为每一个英文字母标记其对应键盘上的行号,然后检测字符串中所有字符对应的行号是否相同。

代码:

class Solution {
public:vector<string> findWords(vector<string>& words) {vector<string> ans;string rowIdx = "12210111011122000010020202";for(auto &word : words){bool isValid = true;char idx = rowIdx[tolower(word[0]) - 'a'];for(int i = 1; i < word.size(); i++){if(rowIdx[tolower(word[i]) - 'a'] != idx){isValid = false;break;}   }if(isValid) ans.push_back(word);}return ans;}
};

166. 分数到小数

链接: 分数到小数
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题利用长除法,存在整数和小数部分,在处理小数部分时,需要将余数*10进行计算,而且如果存在循环还需要利用哈希表记录循环部分。
代码:

class Solution {
public:string fractionToDecimal(int numerators, int denominators) {string ans;long numerator = numerators;long denominator = denominators;if(numerator % denominator == 0) return to_string(numerator / denominator);if(numerator < 0 ^ denominator < 0 ) ans += '-';numerator = abs(numerator);denominator = abs(denominator);long intpart = numerator/denominator;ans += to_string(intpart) + '.';long rem = numerator % denominator;unordered_map<long, int> remainderIndexMap;int index = 0;string frapart;while(rem && !remainderIndexMap.count(rem)){remainderIndexMap[rem] = index;rem *= 10;frapart += to_string(rem/denominator);rem %= denominator;index++;}if(rem != 0){int indexs = remainderIndexMap[rem];frapart = frapart.substr(0,indexs)+'('+frapart.substr(indexs)+')';}ans+=frapart;return ans;}
};

199. 二叉树的右视图

链接: 二叉树的右视图
难度: 中等
题目:
题目描述

运行示例:
运行示例

思路:
这道题本质就是记录每层的最右节点值,所以可以用层次遍历。
代码:

class Solution {
public:vector<int> rightSideView(TreeNode* root) {vector<int> ans;if(root == NULL) return ans;queue<TreeNode*> res;res.push(root);while(!res.empty()){int size = res.size();for(int i = 0 ; i < size; i++){TreeNode* curr = res.front();res.pop();if(i == size - 1){ans.push_back(curr->val);}if(curr->left != NULL) res.push(curr->left);if(curr->right != NULL) res.push(curr->right);}}return ans;}
};

85. 最大矩形

链接: 最大矩形
难度: 困难
题目:
题目描述

运行示例:
运行示例

思路:
这道题与昨天的84. 柱状图中最大的矩形类似,只是在昨天的基础上多了几行,我们可以按行来判断。
代码:

class Solution {
public:int maximalRectangle(vector<vector<char>>& matrix) {int n = matrix.size();int m = matrix[0].size();if(n == 0) return 0;vector<vector<int>> heights(n,vector<int>(m,0));for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (matrix[i][j] == '1') {heights[i][j] = (i == 0 ? 0: heights[i-1][j]) + 1;}}}int ans = 0;for (int i = 0; i < n; i++){vector<int> left(m,0),right(m,0);stack<int> st;for(int j = 0; j < m; j++){while(!st.empty() && heights[i][st.top()] >= heights[i][j]){st.pop();}left[j] = (st.empty()? -1:st.top());st.push(j);}st = stack<int>();for(int j = m-1; j >= 0; j--){while(!st.empty() && heights[i][st.top()] >= heights[i][j]){st.pop();}right[j] = (st.empty()? m:st.top());st.push(j);}for (int j = 0; j < m; j++) {ans = max(ans, (right[j] - left[j] - 1) * heights[i][j]);}}return ans;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/474801.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上位机图像处理和嵌入式模块部署(cmake的使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 过去我们编写windows程序的时候&#xff0c;习惯上都是直接使用visual studio创建工程开发。而开发linux程序的时候&#xff0c;则是编写好c、cpp代…

Nginx 正向代理、反向代理

文章目录 前言1. 正向代理1.1 概念1.2 逻辑图1.3 使用场景 2. 反向代理2.1 概念2.2 逻辑图2.3 使用场景 前言 正向代理主要是用来解决访问限制问题&#xff1b;反向代理则是提供负载均衡、安全防护等作用 1. 正向代理 1.1 概念 正向代理是一个位于客户端和目标服务器之间的代理…

vmware workstation群晖虚拟机vmdk文件导出

为了防止群晖虚拟机中整个挂掉&#xff0c;里面的文件导不出来&#xff0c;尝试直接从vmdk中获取内容。 1、想采用diskgenius去读取文件&#xff0c;发现volume1是空的。只能读取群晖的系统文件。 2、选择另一个linux系统的虚拟机&#xff0c;选择对应的vmdk 3、如果有文件管理…

C++面向对象程序设计-北京大学-郭炜【课程笔记(三)】

C面向对象程序设计-北京大学-郭炜【课程笔记&#xff08;三&#xff09;】 1、构造函数&#xff08;constructor&#xff09;1.1、基本概念 2、赋值构造函数2.1、基本概念2.1、复制构造函数起作用的三种情况2.2、常引用参数的使用 3、类型转换构造函数3.1、什么事类型转换构造函…

【Python中unittest(单元测试)的简单应用】

1、unittest核心组成&#xff1a; TestFixture&#xff1a;对一个测试用例环境的搭建和销毁&#xff0c;一个fixture&#xff0c;通过覆盖TestCase的setUp()和tearDown()方法来实现。如可以在setUp()中通过建立数据库连接来初始化&#xff0c;在tearDown()中清除数据库产生的数…

【c++】const引用

Hello everybody!今天给大家讲讲有关const引用部分的知识&#xff0c;因为这部分知识涉及到const与引用直接如何灵活的运用&#xff0c;且不太好理解。所以我认为讲一下这里的知识还是很有必要的&#xff01; 1.权限可缩小 首先&#xff0c;当我们定义了a&#xff0c;在给a取别…

第13章 网络 Page747~749 asio核心类 ip::tcp::resolver

3&#xff0c; ip::tcp::resolver 如果新浪的IP地址变了&#xff0c;该怎么办呢? ip::tcp::resolver 可以帮我们用上www.sina.com.cn&#xff0c;因为它负责将人类可读的多种网址信息&#xff0c;一步 到位地解析成ip::tcp::socket建立连接所需要的ip::tcp::endpoint结构&…

安装faiss环境教程

文章目录 打开环境安装faiss环境检查已安装的环境切换环境至faiss 打开环境 source activate # 打开环境安装faiss环境 conda create -n faiss_env # 安装faiss环境检查已安装的环境 conda info --envs # 检查已安装的环境切换环境至faiss conda a…

谷歌浏览器输入地址后http自动转https解决方法

谷歌浏览器输入地址后http自动转https解决方法 点击地址栏旁边的锁&#xff0c;再点击网络设置往下拉&#xff0c;找到&#xff1a;不安全内容&#xff0c;默认是屏蔽状态&#xff0c;改为允许状态&#xff0c;再去访问http 点击地址栏旁边的锁&#xff0c;再点击网络设置 往下…

计算机服务器中了_locked勒索病毒怎么办?Encrypted勒索病毒解密数据恢复

随着网络技术的不断发展&#xff0c;数字化办公已经成为企业生产运营的根本&#xff0c;对于企业来说&#xff0c;数据至关重要&#xff0c;但网络威胁无处不在&#xff0c;近期&#xff0c;云天数据恢复中心接到很多企业的求助&#xff0c;企业的计算机服务器遭到了_locked勒索…

Java数字孪生智慧工地数据大屏APP项目源码

目录 智慧工地云平台核心功能 1.劳务管理 2.视频监控 3.安全教育 4.进度管理 5.环境监测 6.塔吊监控 7.升降机监控 8.工地广播 9.深基坑高支模 10.AI识别 11.安全质量 智慧工地建设的价值和意义 危大工程管理 智慧工地聚焦施工现场一线生产活动&#xff0c;利用物…

面试经典150题【1-10】

文章目录 面试经典150题【1-10】88. 合并两个有序数组27.移除元素26.删除有序数组中的重复项80.删除有序数组中的重复项II169.多数元素189.轮转数组121.买卖股票的最佳时机1122. 买卖股票的最佳时机 II55.跳跃游戏![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ff…