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

这篇具有很好参考价值的文章主要介绍了【2023】字节跳动 10 日心动计划——第三关。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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;
    }
};

方法二:同样使用双指针。之前我们是让两个指针从中间往两边移动,这次我们让两个指针从两边往中间移动,所以填答案的时候需要倒着填。文章来源地址https://www.toymoban.com/news/detail-640862.html

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;
    }
};

到了这里,关于【2023】字节跳动 10 日心动计划——第三关的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 字节跳动基础架构编排调度团队论文入选云计算领域顶会 SoCC 2023

    2023 年 10 月 30 日至 11 月 1 日,SoCC 2023 将在美国加州 Santa Cruz 举行。 字节跳动基础架构-编排调度团队的研究成果被 S o CC 2023 接收,并受邀进行现场报告。 SoCC 会议 全称 Annual ACM Symposium on Cloud Computing,是 云计算领域顶级会议之一 ,同时也是 ACM 所有会议当中唯一一个同时被

    2024年02月08日
    浏览(39)
  • 大一下暑期计划 + 2023字节青训营预告直播

    目录 🌼前言 🌹后端学习方法 🌳1,层次 🌳2,体系 🌳3,算法和数据结构 🌳4,总结 🌹前端学习方法 🌳基础 🌹求职中如何弥补学历差距? 🌹项目经历怎么准备? 🎂官网链接 + 简历如何写 🎂0基础可以跟项目吗 🎂主修Java或者C++能不能参加青训营? 🍍大一下暑期计划

    2024年02月11日
    浏览(48)
  • LeetCode(字节10日)-0714

    思路:前缀树匹配 问题:一开始没有仔细审题,犯大忌 思路: 一开始考虑到路径是全局最优贪心可能不行,就没有考虑使用 BFS,直接DFS,然后超时; 又考虑记忆化搜索+剪枝还是超时,可能没有优化好; 最后看了一眼题解原来可以用 dij,就思考 dij; 关键点在于 visit 这个

    2024年02月17日
    浏览(34)
  • LeetCode(字节10日)-0716

    注意:需要使用 set 过滤掉重复集合,例如 aab 的全排列 思路:乍一看是滑动窗口,但是发现可以是负数,窗口失效,则考虑双层 for 循环,之后看题解发现可以使用前缀和+哈希表优化 前缀和思路:pre 记录累加的值,那么k = pre[j] - pre[i] 我们只要确定了 pre[j] 就可以确定pre[

    2024年02月16日
    浏览(26)
  • LeetCode(字节10日)-0717

    思路:快慢指针,相遇 的时候意味着快比慢多走了一个圆环路程,但是怎么确定圆环入口忘记了,直接用 set 判断重复的。后来发现是需要把 head 移动,当 head 入环的时候慢指针刚好回到入口。 思路:用数组辅助;或者找到中点,反转后半部分,在合并起来

    2024年02月16日
    浏览(32)
  • 算法通关村第三关——数组

    从语言实现的角度: 分为顺序型和链表型,顺序型就是将数据存储在一段固定的空间内,这样访问的效率很高,但是如果要删除和增加元素的话代价比较高。 而在链表型里,元素之间是通过地址依次连接的,因此访问时必须从头开始逐步向后找,因此查找效率低,而删除和

    2024年02月11日
    浏览(52)
  • [Go版]算法通关村第三关青铜——不简单的数组增删改查

    在golang中,切片的底层就是数组,切片是对底层数组的引用,当传递一个切片给函数时,实际上是传递了切片的引用。因此,在函数内部修改切片的内容会影响原始切片。 先声明并初始化一个长度为当前切片长度+1的切片 首部添加:将其余全部向后移动一位,然后给首位赋值

    2024年02月13日
    浏览(36)
  • 字节跳动高频题目(1)

     3,1,42,200,15 121,128,49,25,88 5,146,70,2,4 21,33,55,27,560 11,20,31,53,236 300,26,215,279,438 135,148,9,169,76 22,101,14,54,56 72,206,152,80,39 46,62,104,122,179 3. Longest Substring Without Repeating Characters Medium Given a string  s , find the length of the  longest   s

    2024年04月28日
    浏览(37)
  • 字节跳动春招——特征提取

           小明是一名算法工程师,同时也是一名铲屎官。某天,他突发奇想,想从猫咪的视频里挖掘一些猫咪的运动信息。为了提取运动信息,他需要从视频的每一帧提取“猫咪特征”。一个猫咪特征是一个两维的vectorx, y。如果x_1=x_2 and y_1=y_2,那么这俩是同一个特征。    

    2024年02月07日
    浏览(46)
  • 字节跳动懂车帝一面

    自我介绍 3分钟 项目介绍 10分钟 完单率解释 广告计费和消耗 AB实验一般怎么做? 常见AB策略有哪些类型? 进行AB的策略是如何寻找? 决定要不要AB,通常是有新的能力/产品上线,预计对业务的核心关注指标有收益,需要用实验证明有收益可扩量 AB怎么分组,以及各自多少流

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包