栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

248周赛回顾

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

248周赛回顾

第一题

同一个数组来存储数组nums中key的下标。然后通过for循环找出符合题目条件的下标。

class Solution {
public:
    vector findKDistantIndices(vector& nums, int key, int k) {
        vector ans;
        for(int i = 0; i < nums.size(); i ++){
            if(nums[i] == key)
                ans.push_back(i);
        }
        vector res;
        int j = 0;
        for(int i = 0; i < nums.size(); i ++){
            if(j + 1 < ans.size() && i - ans[j] > k)  j ++;
            if(abs(i - ans[j]) <= k)    res.push_back(i);
        }
        return res;
    }
};

第二题

刚开始时看了半天都没有看懂题目的意思而且题目也有点长,唉,当时只能放弃了,没办法,我的耐心和阅读理解能力都有点差

后来看了一下题解,发现这题的意思是:给一个n,在nXn的二维数组中有一些工件,一个数组存放这些工件的起始位置和终止位置,还有一个数组存放的是可以挖掘的单元格,要统计可以挖掘工件的数量。看了一个数据可以直接暴力模拟。

看了题解学会了goto的用法。

代码:

class Solution {
public:
    int digArtifacts(int n, vector>& artifacts, vector>& dig) {
        vector> ans(n, vector(n, 0));
        for(auto i : dig){
            int x = i[0], y = i[1];
            ans[x][y] = 1;
        }
        int cnt = 0;
        for(auto i : artifacts){
            int x1 = i[0], y1 = i[1], x2 = i[2], y2 = i[3];
            for(int j = x1; j <= x2; j ++){
                for(int k = y1; k <= y2; k ++){
                    if(!ans[j][k])
                        goto go;
                }
            }
            cnt ++;
            go:;
        }
        return cnt;
    }
};

第三题

分类讨论,当k == 0时只能返回num[0]

当nums.size() ==1时,对k奇偶进行讨论,为奇数说明进行k次操作后只能得到一个空栈,你们返回-1,否则可以返回nums[0].

当k>nums,size(),说明可以将nums中的所有元素都遍历一遍,然后找出其最大值。

当k<=nums.size(),此时不能将nums中的所有元素遍历一遍,只能遍历到k-2,找到其中最大的值或者一直进行出栈操作既得到nums[k],将其比较返回其最大值。

代码:

class Solution {
public:
    int maximumTop(vector& nums, int k) {
        int res = 0;
        if(k == 0)  return nums[0];
        if(nums.size() == 1){
            if(k & 1)  return -1;
            return nums[0];
        }
        if(k > nums.size()){
            for(int i = 0; i < nums.size(); i ++)   res = max(res, nums[i]);
        }
        else{
            for(int i = 0; i < k - 1; i ++) res = max(res, nums[i]);
            res = max(res, nums[k]);
        }
        return res;
    }
};

第四题:

图论现在对我来说太难了。。。。。 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/769472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号