力扣|2023华为秋招冲刺

news2024/9/30 15:35:17

文章目录

  • 第一关:2023 年 7 月面试题挑战
  • 第二关:2023 年 6 月面试题挑战
  • 第三关:2023 年 5 月面试题挑战

第一关:2023 年 7 月面试题挑战

在这里插入图片描述

class Solution {
public:
    void reverseWord(vector<char>& s,int l,int r){
        for(int i=l,j=r;i<=j;i++,j--){
            char tmp = s[i];
            s[i] = s[j];
            s[j] = tmp;
        }
    }
    void reverseWords(vector<char>& s) {
        int l = 0;
        for(int i=0;i<s.size();i++){
            if(s[i]==' ')
                reverseWord(s,l,i-1),l=i+1;
        }
        reverseWord(s,l,s.size()-1);
        reverseWord(s,0,s.size()-1);
    }
};

在这里插入图片描述

第二关:2023 年 6 月面试题挑战

在这里插入图片描述
遇到边界或者已经走过的点,修改方向。直至修改方向后依旧存在问题,则跳出循环♻️。

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        int dirx[] = {0,1,0,-1};
        int diry[] = {1,0,-1,0};
        int order_dir = 0;
        int cols = matrix[0].size();
        int rows = matrix.size();
        bool used[rows+6][cols+6];
        memset(used, 0, sizeof(used));
        int curx = 0,cury = 0;
        vector<int> ans;
        while(!used[curx][cury]){
            ans.push_back(matrix[curx][cury]);
            used[curx][cury] = 1;
            int nx,ny;
            nx = curx + dirx[order_dir];
            ny = cury + diry[order_dir];
            if(nx<0||nx>=rows||ny<0||ny>=cols||used[nx][ny]){
                order_dir = (order_dir+1)%4;
                nx = curx + dirx[order_dir];
                ny = cury + diry[order_dir];
                if(nx<0||nx>=rows||ny<0||ny>=cols||used[nx][ny]){
                  break;}
            }
            curx = nx;
            cury = ny;
        }
        return ans;
    }
};

在这里插入图片描述

class Solution {
public:
    bool used[30];
    int anslen = 0;
    int getcnt(){
        int res = 0;
        for(int i=0;i<=25;i++)
            res += used[i];
        return res;
    }
    bool check(string &s)
    {
        int cnt[26];
        memset(cnt,0,sizeof(cnt));
        for(int i=0;i<s.length();i++){
            cnt[s[i]-'a']++;
            if(cnt[s[i]-'a']>=2) return false;
        }
        return true;
    }
    void dfs(int pos,vector<string>& arr){
        
        if(pos>=arr.size()){
            anslen = max(anslen,getcnt());
            return ;
        }
        if(!check(arr[pos])){
            dfs(pos+1,arr);
            return ;
        }
        bool flag = 0;
        for(int i=0;i<arr[pos].size();i++)
        {
            if(used[arr[pos][i]-'a']==1){
                flag = 1;
                break;
            }
        }
        if(flag){
            dfs(pos+1,arr);
            return ;
        }
        for(int i=0;i<arr[pos].size();i++)
            used[arr[pos][i]-'a']=1;
        dfs(pos+1,arr);
        for(int i=0;i<arr[pos].size();i++)
            used[arr[pos][i]-'a']=0;
        dfs(pos+1,arr);
     
    }
    int maxLength(vector<string>& arr) {
        dfs(0,arr);
        return anslen;
    }
};

在这里插入图片描述
dp[i][j][k]代表处理到第i个房子,当前第i的房子偷没偷的情况为j,且第一个房子偷没偷的情况为k

class Solution {
public:
    int rob(vector<int>& nums) {
        if(nums.size()==3) return max(nums[0],max(nums[1],nums[2]));
        if(nums.size()==1) return nums[0];
        int dp[105][2][2];//dp[i][j][k]代表处理到第i个房子,当前第i的房子偷没偷的情况为j,且第一个房子偷没偷的情况为k
        memset(dp,0,sizeof(dp));
        dp[0][0][0] = 0;
        dp[0][1][1] = nums[0];

        dp[1][1][0] = nums[1];
        dp[1][0][1] = nums[0];
        for(int i=2;i<nums.size()-1;i++)
        {
            dp[i][0][0] = max(dp[i-1][0][0],dp[i-1][1][0]);
            dp[i][0][1] = max(dp[i-1][0][1],dp[i-1][1][1]);
             
            dp[i][1][0] = dp[i-1][0][0]+nums[i];
            dp[i][1][1] = dp[i-1][0][1]+nums[i];
        }
        int tot = nums.size();
    
        return max(max(dp[tot-2][1][0],dp[tot-2][1][1]),max(dp[tot-2][0][1],dp[tot-2][0][0]+nums[tot-1]));
    }
};

在这里插入图片描述
块内排序,重新组成,再排序。

class Solution {
public:
    struct node{
        int val,label;
    };
    static bool cmp(node &a,node &b){
        return a.val>b.val;
    }
    int largestValsFromLabels(vector<int>& values, vector<int>& labels, int numWanted, int useLimit) {
        int cur_id = 0;
        map<int,int> id;
        vector<node> vec[20050],fin;
        for(int i=0;i<labels.size();i++){
            if(id[labels[i]]==0) id[labels[i]] = ++cur_id;
            node tmp;
            tmp.val = values[i];
            tmp.label = labels[i];
             vec[id[labels[i]]].push_back(tmp);
          
        }
        node tmp;
        for(int i=1;i<=cur_id;i++){
            sort(vec[i].begin(),vec[i].end(),cmp);
            for(int j=0;j<min(int(vec[i].size()),useLimit);j++)
            {
         
                tmp.val = vec[i][j].val;
                tmp.label = vec[i][j].label;
                fin.push_back(tmp);
            }
               
         }
        sort(fin.begin(),fin.end(),cmp);
        int ans = 0;
        int limit = min(numWanted,int(fin.size()));
        for(int i=0;i<limit;i++)
            ans += fin[i].val;
        return ans;
    }
};

第三关:2023 年 5 月面试题挑战

在这里插入图片描述

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        int len1 = 0;
        int len2 = 0;
        ListNode* tmp1 = l1;
        ListNode* tmp2 = l2;
        ListNode* pre;
        while(tmp1) len1++,tmp1 = tmp1->next;
        while(tmp2) len2++,tmp2 = tmp2->next;
        if(len2>len1){
            tmp1 = l1;
            l1 = l2;
            l2 = tmp1;
        }
        tmp1 = l1;
        tmp2 = l2;
        int add = 0;
        while(tmp1){
            pre = tmp1;
            if(tmp2){
                int num = tmp1->val + tmp2->val + add;
                tmp1->val = num%10;
                add = num/10;
                tmp1 = tmp1->next;
                tmp2 = tmp2->next;
            }else{
                int num = tmp1->val + add;
                tmp1->val = num%10;
                add = num/10;
                tmp1 = tmp1->next;
            }
        }
        while(add){
            pre->next = new ListNode();
            pre->next->val = add%10;
            pre->next->next = nullptr;
            pre = pre ->next;
            add /=10;
        }
        return l1;
    }
};

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

教程-右键用vscode(新窗口)打开文件或目录

通过本文可以提高效率&#xff0c;用起来更爽更高效。 本文实现了&#xff08;windows系统&#xff09;&#xff1a; 右键-用vscode(当前窗口)打开文件或目录右键-用vscode-新窗口打开文件或目录 注意&#xff1a; 下面的安装路径要更改为您实际的路径 具体配置步骤&#x…

066:vue中实现二维数组的全选、全不选、反选、部分全选功能(图文示例)

第061个 查看专栏目录: VUE ------ element UI 专栏目标 在vue和element UI联合技术栈的操控下,本专栏提供行之有效的源代码示例和信息点介绍,做到灵活运用。 (1)提供vue2的一些基本操作:安装、引用,模板使用,computed,watch,生命周期(beforeCreate,created,beforeM…

面向零信任架构的访问安全态势评估

伴随着“云大物移”等新兴 IT 技术的快速发展&#xff0c;企业数字化转型使得 IT 业务的网络环境更加复杂多样&#xff0c;企业数字资源的安全防护正面临着前所未有的压力与威胁。零信任安全架构放弃了传统基于“边界”的安全模型&#xff0c;以访问上下文的安全态势感知为基础…

如何优雅的只在当前页面中覆盖ui库中组件的样式(vue的问题)

首先我们vue文件的样式都是写在<style lang"less" scoped></style>标签中的&#xff0c;加scoped是为了使得样式只在当前页面有效。那么问题来了&#xff0c;看图&#xff1a; 我们正常写的所有样式&#xff0c;都会被加上[data-v-23d425f8]这个属性&…

C#进阶-IIS服务器发布ASP.NET项目

对于云服务器&#xff0c;程序员一般不会陌生&#xff0c;如果项目需要发布到现网&#xff0c;那么服务器是必不可缺的一项硬性条件&#xff0c;那么如何在云服务器上部署一个项目&#xff0c;需要做哪些配置准备&#xff0c;下面就由本文档为大家讲解&#xff0c;本篇以 IIS服…

小学生练字神器,在线字帖生成器网站源码

源码介绍 帮助小学生规范汉字书写&#xff0c;提高汉字书写水平&#xff0c;在线小学生练字神器&#xff01;它不仅功能强大&#xff0c;而且完全免费&#xff0c;是每个小学生必备的练字工具。 海量字库&#xff1a;收录9574个常用汉字&#xff0c;满足小学生的学习需求。多…

R语言【paleobioDB】——pbdb_intervals():通过参数选择,返回多个地层年代段的基本信息

Package paleobioDB version 0.7.0 paleobioDB 包在2020年已经停止更新&#xff0c;该包依赖PBDB v1 API。 可以选择在Index of /src/contrib/Archive/paleobioDB (r-project.org)下载安装包后&#xff0c;执行本地安装。 Usage pbdb_interval (id, ...) Arguments 参数【..…

【Emgu.CV教程】5.1、几何变换之平移

图像的几何变换对于图像处理来说&#xff0c;也是最基础的那一档次&#xff0c;包括平移、旋转、缩放、透视变换等等&#xff0c;也就是对图像整理形状的改变&#xff0c;用到的函数都比较简单&#xff0c;理解起来也很容易。但是为了凑字数&#xff0c;还是一个函数一个函数的…

微信公众号生成带参数的二维码加上logo

上次&#xff0c;记录的《用php生成微信公众号带参数的二维码demo》 这次&#xff0c;加上logo显得正规一点&#xff0c;起码看起来不像诈骗二维码 接上&#xff0c;上次的公众号二维码&#xff08;远程二维码地址&#xff09; // $wx_code ‘https://mp.weixin.qq.com/cgi-b…

【JVM的相关参数和调优】

文章目录 JVM 调优的参数类型一、标配参数二、X参数三、XX参数 JVM 调优的常用参数 JVM 调优的参数类型 一、标配参数 这类此参数在jdk的各个版本之间很少会变化&#xff0c;基本不改变 java -version&#xff0c;查看当前电脑上的jdk的版本信息 java -help&#xff0c;查看…

Typora上传图片失败PicGo

起初我是在Typora中点击一键上传图片&#xff0c;结果如下&#xff0c;报错。可是我找了半天也没错啊。 最后发现原来是一个图片的命名问题&#xff0c;名字太过于复杂&#xff0c;PicGo识别不出&#xff0c;一个图片报错导致其它也上传不了。 我把它复制到其它文件夹之后&…

Jetson_yolov8_解决模型导出.engine遇到的问题、使用gpu版本的torch和torchvision、INT8 FP16量化加快推理

1、前情提要 英伟达Jetson搭建Yolov8环境过程中遇到的各种报错解决&#xff08;涉及numpy、scipy、torchvision等&#xff09;以及直观体验使用Yolov8目标检测的过程&#xff08;CLI命令行操作、无需代码&#xff09;-CSDN博客和YOLOv8_测试yolov8n.pt&#xff0c;yolov8m.pt训…

Qt实现复杂列表

Qt实现复杂列表 界面效果layeritemdelegate.hlayeritemdelegate.cpplayertablemodel.hlayertablemodel.cpplayertableview.hlayertableview.cppmainwindow.hmainwindow.cpp 界面效果 layeritemdelegate.h #ifndef LAYERITEMDELEGATE_H #define LAYERITEMDELEGATE_H#include &l…

【python】搭配Miniconda使用VSCode

现在的spyder总是运行出错&#xff0c;启动不了&#xff0c;尝试使用VSCode。 一、在VSCode中使用Miniconda管理的Python环境&#xff0c;可以按照以下步骤进行&#xff1a; a. 确保Miniconda环境已经安装并且正确配置。 b. 打开VSCode&#xff0c;安装Python扩展。 打开VS…

InternLM第3次课作业

部署 参考github教程&#xff1a;https://github.com/InternLM/tutorial/tree/main/langchain 问题1&#xff1a; windows端口映射过程命令 ssh -i C:\\Users\\breat/.ssh/id_rsa.pub -CNg -L 7860:127.0.0.1:7860 rootssh.intern-ai.org.cn -p 3 4145 中&#xff0c;提示找不…

MetaGPT前期准备与快速上手

大家好&#xff0c;MetaGPT 是基于大型语言模型&#xff08;LLMs&#xff09;的多智能体协作框架&#xff0c;GitHub star数量已经达到31.3k。 接下来我们聊一下快速上手 这里写目录标题 一、环境搭建1.python 环境2. MetaGpt 下载 二、MetaGPT配置1.调用 ChatGPT API 服务2.简…

Unity对应SDK和NDK版本的对照表

官网&#xff1a;Unity - Manual: Android environment setup 本人安装的是2022版本长期支持版本2022.3.15f1c1 安装Java的JDK环境就不在这里展开了&#xff0c;就记录下对Android SDK的设置&#xff0c;要与Unity的版本对应&#xff0c;否则会出现很多莫名奇妙的问题。 打开…

电子学会C/C++编程等级考试2020年12月(三级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:完美立方 形如 a^3= b^3 + c^3 + d^3的等式被称为完美立方等式。例如 12^3= 6^3 + 8^3 + 10^3 。 编写一个程序,对任给的正整数 N (N≤100),寻找所有的四元组 (a, b, c, d),使得 a^3= b^3 + c^3 + d^3 ,其中 a,b,c,d均大于 11, …

【Jmeter之get请求传递的值为JSON体实践】

Jmeter之get请求传递的值为JSON体实践 get请求的常见传参方式 1、在URL地址后面拼接&#xff0c;有多个key和value时&#xff0c;用&链接 2、在Parameters里面加上key和value 第一次遇到value的值不是字符串也不是整型&#xff0c;我尝试把json放到value里面&#xff0…

java多线程面试(二)

1.说一下你对java内存模型JVM的理解 java内存模型是一种抽象的模型&#xff0c;被定义出来屏蔽各种硬件和操作系统的访问差异。 JMM定义了线程和主内存之间的抽象关系&#xff1a;线程之间的共享变量存储在主内存 &#xff08;Main Memory&#xff09;中&#xff0c;每个线程…