当前位置: 首页 > news >正文

【2023】字节跳动 10 日心动计划——第三关

目录

  • 1. 最长有效括号
  • 2. 有序数组的平方

1. 最长有效括号

🔗 原题链接:32. 最长有效括号

类似于有效的括号,考虑用栈来解决。

具体来讲,我们始终保持栈底元素为当前已经遍历过的元素中「最后一个没有被匹配的右括号的下标」,这样的做法主要是考虑了边界条件的处理,栈里其他元素维护左括号的下标。

从左往右遍历整个字符串,如果遇到 (,则将其下标压入栈中;如果遇到 ),则弹出栈顶元素,然后判断栈是否为空,如果栈为空,说明当前的右括号为没有被匹配的右括号,将其压入栈中,否则,更新答案。

注意,任何时刻,只有栈底元素是右括号的下标,其他元素都是左括号的下标!

class Solution {
public:int longestValidParentheses(string s) {stack<int> stk;int ans = 0;stk.push(-1);for (int i = 0; i < s.size(); i++) {if (s[i] == '(') stk.push(i);else {stk.pop();if (stk.empty()) stk.push(i);else ans = max(ans, i - stk.top());}}return ans;}
};

2. 有序数组的平方

🔗 原题链接:977. 有序数组的平方

这里介绍两种做法。

方法一:找到正负元素的分界线,然后对正、负数组进行二路归并。

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int p = lower_bound(nums.begin(), nums.end(), 0) - nums.begin();int i = p, j = p - 1;vector<int> res;while (i < nums.size() && j >= 0) {int a = pow(nums[i], 2), b = pow(nums[j], 2);if (a <= b) res.push_back(a), i++;else res.push_back(b), j--;}while (i < nums.size()) {int a = pow(nums[i], 2);res.push_back(a);i++;}while (j >= 0) {int b = pow(nums[j], 2);res.push_back(b);j--;}return res;}
};

方法二:同样使用双指针。之前我们是让两个指针从中间往两边移动,这次我们让两个指针从两边往中间移动,所以填答案的时候需要倒着填。

class Solution {
public:vector<int> sortedSquares(vector<int>& nums) {int n = nums.size();vector<int> res(n);int i = 0, j = n - 1, k = n - 1;while (i <= j) {int a = nums[i] * nums[i];int b = nums[j] * nums[j];if (a >= b) res[k] = a, i++;else res[k] = b, j--;k--;}return res;}
};
http://www.lryc.cn/news/110540.html

相关文章:

  • 【无网络】win10更新后无法联网,有线无线都无法连接,且打开网络与Internet闪退
  • HTML <script> 标签
  • FPGA----UltraScale+系列的PS侧与PL侧通过AXI-HP交互(全网唯一最详)附带AXI4协议校验IP使用方法
  • Unity小游戏——迷你拼图
  • 三 动手学深度学习v2 —— Softmax回归+损失函数+图片分类数据集
  • Stable Diffusion 使用教程
  • 在线考试系统springboot学生试卷问答管理java jsp源代码mysql
  • 创建vue-cli(脚手架搭建)
  • 【单调栈part02】| 503.下一个更大元素||、42.接雨水
  • Java——如何使用Stream替换掉List<Student>中符合要求的元素
  • gin 框架中的 gin.Context
  • 新版chrome浏览器恢复下载的时候恢复底栏提示
  • ModuleNotFoundError: No module named ‘lsb_release‘
  • 2021-03-03 Multisim 14.0 电池充电防止反接保护
  • 【AI】《动手学-深度学习-PyTorch版》笔记(八):线性回归
  • uniapp 持续获取定位(登录状态下才获取)(不采用定时器)(任意页面都可监听定位改变)
  • 【Linux】Linux工具
  • ImageNet1000分类,英文原版,中文翻译版
  • 「Qt」常用事件介绍
  • 小鱼深度产品测评之:阿里云容器服务器ASK,一款不需购买节点,即可直接部署容器应用。
  • RK3588平台开发系列讲解(文件系统篇)什么是 VFS
  • Less is More: Focus Attention for Efficient DETR
  • 2023 8-5
  • 数据结构 | 线性数据结构——双端队列
  • 使用 Docker Compose 部署单机版 Redis:简单高效的数据缓存与存储
  • 第三章 图论 No.4最小生成树的简单应用
  • 微服务-nacos配置管理
  • 【开发问题】flink的sql任务,用命令行执行
  • Git常见问题
  • Android如何实现开机自启