您好,欢迎访问代理记账网站
移动应用 微信公众号 联系我们

咨询热线 -

电话 15988168888

联系客服
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

285周赛的反思

第一题:

题目:

给你一个下标从 0 开始的整数数组 nums 。如果两侧距 i 最近的不相等邻居的值均小于 nums[i] ,则下标 i 是 nums 中,某个峰的一部分。类似地,如果两侧距 i 最近的不相等邻居的值均大于 nums[i] ,则下标 i 是 nums 中某个谷的一部分。对于相邻下标 i 和 j ,如果 nums[i] == nums[j] , 则认为这两下标属于 同一个 峰或谷。

注意,要使某个下标所做峰或谷的一部分,那么它左右两侧必须 都 存在不相等邻居。

返回 nums 中峰和谷的数量。

(1)运行结果及代码:

(2)总结:当时看到这个题的时候觉得其数据范围比较小,首先就是想着用暴力的方式将其解出来,但是尝试了很多次结果如好上图所示,总是不能通过所有的数据测试点,最终以失败告终。

(3)题解中的某个代码以及我的感想:

class Solution {
public:
    int countHillValley(vector<int>& nums) {
        int sz = unique(begin(nums),end(nums)) - begin(nums), ans = 0;

        if(sz >= 2) {
            for(int i = 1;i < sz - 1;i ++){
                ans += (nums[i-1]-nums[i])*(nums[i+1]-nums[i]) > 0;
            } 
        }
        return ans;
    }
};

      这段代码中使用了一个unique函数,它的功能是元素去重。即”删除”序列中所有相邻的重复元素(只保留一个)。此处的删除,并不是真的删除,而是指重复元素的位置被不重复的元素给占领了。这个函数还是第一次见到,这个解法只能说是十分惊艳到我了。

第二题:

题目:

在一条无限长的公路上有 n 辆汽车正在行驶。汽车按从左到右的顺序按从 0 到 n - 1 编号,每辆车都在一个 独特的 位置。

给你一个下标从 0 开始的字符串 directions ,长度为 n 。directions[i] 可以是 'L'、'R' 或 'S' 分别表示第 i 辆车是向 左 、向 右 或者 停留 在当前位置。每辆车移动时 速度相同 。

碰撞次数可以按下述方式计算:

·当两辆移动方向 相反 的车相撞时,碰撞次数加 2 。
·当一辆移动的车和一辆静止的车相撞时,碰撞次数加 1 。
碰撞发生后,涉及的车辆将无法继续移动并停留在碰撞位置。除此之外,汽车不能改变它们的状态或移动方向。

返回在这条道路上发生的 碰撞总次数 。

(1)运行结果及代码:

 (2)总结:当时写第一题写了大概四十多分钟的样子,写得我头昏脑胀的,只好放弃然后来看第二题,心想能不能侥幸通过第二题。

但是实事如上所示,通过 的数据远小于第一题,当时写这一题的时候我就想着通过枚举的方法来将其解出,毕竟看上去似乎枚举出每一种情况并不难,所以我就尝试了。

但是世事难料,结果总是不尽人意,再加上我当时第一题也没有写出来,说实话心态也是有点小蹦的,所以第二题也没能写出来。

(3)题解中的某个代码及我的感想:

class Solution {
public:
    int countCollisions(string d) {
        int n = d.size();
        int l = 0;
        int r = n - 1;
        int cnt = 0;
        //排除不会相撞的情况
        while (l <= r && d[l] == 'L') ++l;
        while (l <= r && d[r] == 'R') --r;

        for (int i = l; i <= r; ++i) {
            if (d[i] != 'S') {
                ++cnt;
            }
        }
        return cnt;
    }
};

这个代码的核心思想是:

1、左边的车往右开,右边的车往左开,此时撞车后对答案的贡献为2,其实每辆车对答案的贡献都为1。
2、左边的车往右开碰到静止的车,右边的车往左开碰到静止的车,此时每辆车贡献也为1。在左右两个端点:左边往左开和右边往右开的车永远也不会有交集,只需要判断中间车辆的情况,对于中间的车辆,只要不是静止状态,那么一定会撞车(可能相撞也可能遇到静止的车),对答案的贡献都是1,所以枚举时候计算即可。


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进