比亚迪,学历大于一切

news2024/11/27 9:44:51

比亚迪

今天逛学生聚集地(牛客网)的时候,看到一篇前几天的帖子。

标题为「比亚迪,学历大于一切」

alt

这位发帖的同学指出,他曾在比亚迪工作,当时入职时级别为 G3/F1,目测自己工作三年也不一定能升到 E1,而一些学历较好的硕士应届生则可以直接以 E1 级别进入比亚迪。

这位同学提到:目前,比亚迪为了提升团队的高学历比例,所以只认学历

除了入职时有更高职级以外,高学历的员工也更容易获得升职加薪的机会。

确实,别的公司可能会存在工资倒挂情况,但那毕竟是水底下的(相对保密),而比亚迪这种职级上的倒挂则是赤裸裸的明面上。

这是从制度建立时就不考虑老员工感受的企业,长期来说对留存率有害。

帖子底下有不少网友纷纷表示自己的看法:

alt
alt
alt
alt

对此,你怎么看呢 🤣🤣🤣

...

回归主线。

来做一道和「Build Your Dreams」相关的题目。

...

回归主线。

题目描述

平台:LeetCode

题号:1222

在一个 8x8 的棋盘上,放置着若干「黑皇后」和一个「白国王」。

给定一个由整数坐标组成的数组 queens,表示黑皇后的位置;以及一对坐标 king,表示白国王的位置,返回所有可以攻击国王的皇后的坐标(任意顺序)。

示例 1:

alt
输入:queens = [[0,1],[1,0],[4,0],[0,4],[3,3],[2,4]], king = [0,0]

输出:[[0,1],[1,0],[3,3]]

解释: 
[0,1] 的皇后可以攻击到国王,因为他们在同一行上。 
[1,0] 的皇后可以攻击到国王,因为他们在同一列上。 
[3,3] 的皇后可以攻击到国王,因为他们在同一条对角线上。 
[0,4] 的皇后无法攻击到国王,因为她被位于 [0,1] 的皇后挡住了。 
[4,0] 的皇后无法攻击到国王,因为她被位于 [1,0] 的皇后挡住了。 
[2,4] 的皇后无法攻击到国王,因为她和国王不在同一行/列/对角线上。

示例 2:

alt
输入:queens = [[0,0],[1,1],[2,2],[3,4],[3,5],[4,4],[4,5]], king = [3,3]

输出:[[2,2],[3,4],[4,4]]

示例 3:

alt
输入:queens = [[5,6],[7,7],[2,1],[0,7],[1,6],[5,1],[3,7],[0,3],[4,0],[1,2],[6,3],[5,0],[0,4],[2,2],[1,1],[6,4],[5,4],[0,0],[2,6],[4,5],[5,2],[1,4],[7,5],[2,3],[0,5],[4,2],[1,0],[2,7],[0,1],[4,6],[6,1],[0,6],[4,3],[1,7]], king = [3,4]

输出:[[2,3],[1,4],[1,6],[3,7],[4,3],[5,4],[4,5]]

提示:

  • 一个棋盘格上最多只能放置一枚棋子。

模拟

创建一个二维数组 dirs 来表示八个方向的坐标偏移,同时使用变量 step 来表示从国王位置出发的步数。

在每个方向 i 上,通过 step 步可以到达的坐标为

模拟过程中,我们可使用布尔数组 checked 来记录已处理的方向,当我们遇到皇后或越过棋盘时,可标记该方向已处理。

Java 代码:

class Solution {
    int[][] dirs = new int[][]{{1,0},{0,1},{0,-1},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}};
    public List<List<Integer>> queensAttacktheKing(int[][] qs, int[] k) {
        boolean[][] vis = new boolean[10][10];
        for (int[] q : qs) vis[q[0]][q[1]] = true;
        int x = k[0], y = k[1], step = 1;
        List<List<Integer>> ans = new ArrayList<>();
        boolean[] checked = new boolean[8];
        while (step <= 8) {
            for (int i = 0; i < 8; i++) {
                if (checked[i]) continue;
                int nx = x + dirs[i][0] * step, ny = y + dirs[i][1] * step;
                if (nx < 0 || nx >= 8 || ny < 0 || ny >= 8) {
                    checked[i] = true;
                } else {
                    if (!vis[nx][ny]) continue;
                    List<Integer> list = new ArrayList<>();
                    list.add(nx); list.add(ny);
                    ans.add(list);
                    checked[i] = true;
                }
            }
            step++;
        }
        return ans;
    }
}

C++ 代码:

class Solution {
public:
    vector<vector<int>> queensAttacktheKing(vector<vector<int>>& queens, vector<int>& king) {
        vector<vector<int>> dirs {{1,0},{0,1},{0,-1},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}};
        vector<vector<int>> ans;
        vector<vector<bool>> vis(8vector<bool>(8false));
        for (auto& queen : queens) vis[queen[0]][queen[1]] = true;
        int x = king[0], y = king[1], step = 1;
        vector<boolchecked(8false);
        while (step <= 8) {
            for (int i = 0; i < 8; i++) {
                if (checked[i]) continue;
                int nx = x + step * dirs[i][0];
                int ny = y + step * dirs[i][1];
                if (nx < 0 || nx >= 8 || ny < 0 || ny >= 8) {
                    checked[i] = true;
                } else {
                    if (!vis[nx][ny]) continue;
                    ans.push_back({nx, ny});
                    checked[i] = true;
                }
            }
            step++;
        }
        return ans;
    }
};

Python 代码:

class Solution:
    def queensAttacktheKing(self, queens: List[List[int]], king: List[int]) -> List[List[int]]:
        dirs = [[1,0],[0,1],[0,-1],[-1,0],[1,1],[-1,-1],[1,-1],[-1,1]]
        vis = [[False] * 8 for _ in range(8)]
        for q in queens:
            vis[q[0]][q[1]] = True
        x, y = king
        ans = []
        checked = [False] * 8
        step = 1
        while step <= 8:
            for i in range(8):
                if checked[i]: continue
                nx, ny = x + dirs[i][0] * step, y + dirs[i][1] * step
                if nx < 0 or nx >= 8 or ny < 0 or ny >= 8:
                    checked[i] = True
                else:
                    if not vis[nx][ny]: continue
                    ans.append([nx, ny])
                    checked[i] = True
            step += 1
        return ans

TypeScript 代码:

function queensAttacktheKing(queens: number[][], king: number[]): number[][] {
    let dirs = [[1,0],[0,1],[0,-1],[-1,0],[1,1],[-1,-1],[1,-1],[-1,1]];
    let vis: boolean[][] = Array.from({length:8},()=>Array(8).fill(false));
    for (let q of queens) vis[q[0]][q[1]] = true;
    let x = king[0], y = king[1], step = 1;
    let ans: number[][] = [];
    let checked: boolean[] = Array(8).fill(false);
    while (step <= 8) {
        for (let i = 0; i < 8; i++) {
            if (checked[i]) continue;
            let nx = x + dirs[i][0] * step, ny = y + dirs[i][1] * step;
            if (nx < 0 || nx >= 8 || ny < 0 || ny >= 8) {
                checked[i] = true;
            } else {
                if (!vis[nx][ny]) continue;
                ans.push([nx, ny]);
                checked[i] = true;
            }
        }
        step++;
    }
    return ans;
};
  • 时间复杂度: ,其中 为棋盘总大小
  • 空间复杂度: ,其中 为棋盘总大小

BFS

上述模拟过程也可以使用 BFS 方式进行。

相比于直接模拟,BFS 无须使用额外变量记录处理过的方向以及当前位置与国王的距离。

Java 代码:

class Solution {
    int[][] dirs = new int[][]{{1,0},{0,1},{0,-1},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}};
    public List<List<Integer>> queensAttacktheKing(int[][] qs, int[] k) {
        boolean[][] vis = new boolean[10][10];
        for (int[] q : qs) vis[q[0]][q[1]] = true;
        Deque<int[]> d = new ArrayDeque<>();
        for (int i = 0; i < 8; i++) {
            int x = k[0] + dirs[i][0], y = k[1] + dirs[i][1];
            if (x < 0 || x >= 8 || y < 0 || y >= 8continue;
            d.addLast(new int[]{x, y, i});
        }
        List<List<Integer>> ans = new ArrayList<>();
        while (!d.isEmpty()) {
            int[] info = d.pollFirst();
            int x = info[0], y = info[1], p = info[2];
            if (vis[x][y]) {
                List<Integer> list = new ArrayList<>();
                list.add(x); list.add(y);
                ans.add(list);
            } else {
                int nx = x + dirs[p][0], ny = y + dirs[p][1];
                if (nx < 0 || nx >= 8 || ny < 0 || ny >= 8continue;
                d.addLast(new int[]{nx, ny, p});
            }
        }
        return ans;
    }
}

C++ 代码:

class Solution {
public:
    vector<vector<int>> queensAttacktheKing(vector<vector<int>>& queens, vector<int>& king) {
        vector<vector<int>> dirs = {{1,0},{0,1},{0,-1},{-1,0},{1,1},{-1,-1},{1,-1},{-1,1}};
        vector<vector<bool>> vis(8vector<bool>(8false));
        for (vector<int>& queen : queens) vis[queen[0]][queen[1]] = true;
        deque<vector<int>> d;
        for (int i = 0; i < 8; i++) {
            int x = king[0] + dirs[i][0], y = king[1] + dirs[i][1];
            if (x < 0 || x >= 8 || y < 0 || y >= 8continue;
            d.push_back({x, y, i});
        }
        vector<vector<int>> res;
        while (!d.empty()) {
            vector<int> cur = d.front();
            d.pop_front();
            if (vis[cur[0]][cur[1]]) {
                res.push_back({cur[0], cur[1]});
            } else {
                int nx = cur[0] + dirs[cur[2]][0], ny = cur[1] + dirs[cur[2]][1];
                if (nx < 0 || nx >= 8 || ny < 0 || ny >= 8continue;
                d.push_back({nx, ny, cur[2]});
            }
        }
        return res;
    }
};

Python 代码:

class Solution:
    def queensAttacktheKing(self, queens, king):
        dirs = [[1,0],[0,1],[0,-1],[-1,0],[1,1],[-1,-1],[1,-1],[-1,1]]
        vis = [[False]*8 for _ in range(8)]
        for q in queens: vis[q[0]][q[1]] = True
        d = deque()
        for i in range(8):
            x = king[0] + dirs[i][0]
            y = king[1] + dirs[i][1]
            if x < 0 or x >= 8 or y < 0 or y >= 8continue
            d.append([x, y, i])
        ans = []
        while d:
            cur = d.popleft()
            if vis[cur[0]][cur[1]]:
                ans.append([cur[0], cur[1]])
            else:
                x = cur[0] + dirs[cur[2]][0]
                y = cur[1] + dirs[cur[2]][1]
                if x < 0 or x >= 8 or y < 0 or y >= 8continue
                d.append([x, y, cur[2]])
        return ans

TypeScript 代码:

function queensAttacktheKing(queens: number[][], king: number[]): number[][] {
    let dirs = [[1,0],[0,1],[0,-1],[-1,0],[1,1],[-1,-1],[1,-1],[-1,1]];
    let vis: boolean[][] = Array(8).fill(false).map(() => Array(8).fill(false));
    queens.forEach(q => vis[q[0]][q[1]] = true);
    let d: number[][] = [];
    for (let i = 0; i < 8; i++) {
        let x = king[0] + dirs[i][0], y = king[1] + dirs[i][1];
        if (x < 0 || x >= 8 || y < 0 || y >= 8continue;
        d.push([x, y, i]);
    }
    let res = [];
    while (d.length !== 0) {
        let cur = d.shift();
        if (vis[cur[0]][cur[1]]) {
            res.push([cur[0], cur[1]]);
        } else {
            let x = cur[0] + dirs[cur[2]][0], y = cur[1] + dirs[cur[2]][1];
            if (x < 0 || x >= 8 || y < 0 || y >= 8continue;
            d.push([x, y, cur[2]]);
        }
    }
    return res;
};
  • 时间复杂度: ,其中 为四条线的总步数
  • 空间复杂度: ,其中 为棋盘总大小

最后

给大伙通知一下 📢 :

全网最低价 LeetCode 会员目前仍可用!!!

📅 年度会员:有效期加赠两个月!!; 季度会员:有效期加赠两周!!

🧧 年度会员:获 66.66 现金红包!!; 季度会员:获 22.22 现金红包!!

🎁 年度会员:参与当月丰厚专属实物抽奖(中奖率 > 30%)!!

专属链接:leetcode.cn/premium/?promoChannel=acoier

我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。

欢迎关注,明天见。

更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉

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

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

相关文章

【频繁模式挖掘】FP-Tree算法(附Python实现)

一、实验内容简介 该实验主要使用频繁模式和关联规则进行数据挖掘&#xff0c;在已经使用过Apriori算法挖掘频繁模式后&#xff0c;这次使用FP-tree算法来编写和设计程序&#xff0c;依然使用不同规模的数据集来检验效果&#xff0c;最后分析和探讨实验结果&#xff0c;看其是…

HarmonyOS 应用开发-使用colorPicker实现背景跟随主题颜色转换

介绍 本示例介绍使用image库以及effectKit库中的colorPicker对目标图片进行取色&#xff0c;将获取的颜色作为背景渐变色&#xff0c;通过swiper组件对图片进行轮播&#xff0c; 效果图预览 使用说明 直接进入页面&#xff0c;对图片进行左右滑动&#xff0c;或者等待几秒&a…

2014最新AI智能创作系统ChatGPT网站源码+Midjourney绘画网站源码+搭建部署教程文档,支持最近火爆的Suno-v3-AI音乐生成大模型

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持…

鼠标经过切换项,切换显示对应的内容(js)

一、功能描述 有多个切换项&#xff0c;鼠标移到每一项时对应切换下面对应的内容&#xff0c;一项对应一项内容&#xff0c;并且切换选中的样式。 二、实现效果 以这个例子为例。 三、实现思路 1.获取所有切换项。 2.获取所有切换项内容。 3.定义好“move”样式&#xff0…

链表之双向链表的实现

铁汁们大家好&#xff0c;我们上一篇博客学习了单链表&#xff0c;这节课让我们继续往深学习&#xff0c;学习一下双线链表&#xff0c;话不多说&#xff0c;我们开始吧&#xff01; 目录 1.双向链表 2.顺序表和链表的优缺点 3.双向链表的实现 1.双向链表 1.我们要实现的双线…

IDEA中修改git的作者、邮箱名称

目录 一、查看当前git信息 1、查看git作者名称 如下图&#xff1a; 2、查看git邮箱信息 二、修改git信息 1、修改git作者名称 如下图&#xff1a; 2、修改git邮箱名称 一、查看当前git信息 1、查看git作者名称 在git控制台 或者 Terminal 输入 git config user.name …

蓝桥杯物联网竞赛_STM32L071_16_EEPROM

仍然是没有考过的知识点 朴素的讲就是板子中一块不会因为断电重启而导致数值初始化的一片地址 要注意的是有时候容易把板子什么写错导致板子什么地址写坏了导致程序无法烧录&#xff0c;这个时候记得一直按flash键烧录&#xff0c;烧录时会报错&#xff0c;点击确定&#xff0…

飞鸟写作可靠吗 #职场发展#经验分享#经验分享

飞鸟写作是一个非常便捷的论文写作工具&#xff0c;不仅可以帮助用户高效地完成论文写作&#xff0c;还可以提供查重降重的功能&#xff0c;帮助用户确保论文的原创性。那么&#xff0c;飞鸟写作到底可靠吗&#xff1f;答案是肯定的。 首先&#xff0c;飞鸟写作提供的查重降重功…

经典算法-分治法由散点得出凸包-python实现

import copy import random import matplotlib import mathdef distance_p2l(point, line_point1, line_point2):if (line_point2[0] - line_point1[0]) 0:return abs(point[0] - line_point2[0])# 计算直线的斜率m (line_point2[1] - line_point1[1]) / (line_point2[0] - l…

电脑出现mfc140u.dll丢失怎么办?教你7个方法解决此问题

mfc140u.dll 是一个动态链接库 (Dynamic Link Library, DLL) 文件&#xff0c;它是 Microsoft Windows 操作系统环境下用于支持应用程序运行的重要组成部分。具体来说&#xff0c;mfc140u.dll 是 Microsoft Foundation Class (MFC) 库 14.0 版本的 Unicode 版本动态链接库文件。…

分享一下项目中遇到的排序失效问题

今天把原来的一个查询接口的业务代码进行了优化&#xff0c;减少了十几行冗余的代码。 原来的代码 ChongwuServiceImpl.java /*** author heyunlin* version 1.0*/ Slf4j Service public class ChongwuServiceImpl implements ChongwuService {Overridepublic JsonResult<…

TensorFlow-gpu安装教程(Linux系统)

一、TensorFlow-gpu环境的安装 使用这个代码安装的前提是你的深度学习已经环境存在 &#xff08;例如&#xff1a;conda、pytorch、cuda、cudnn等环境&#xff09; TensorFlow版本对应GPU版本&#xff0c;自己选择版本&#xff0c;也可以忽略版本直接安装TensorFlow-gpu cond…

百度松果菁英班——机器学习实践五:明星图片爬取

飞桨AI Studio星河社区-人工智能学习与实训社区 &#x1f96a;图片爬取 import requests import os import urllib ​ class GetImage():def __init__(self,keyword大雁,paginator1):# self.url: 链接头self.url http://image.baidu.com/search/acjson?self.headers {User…

IO_DAY7

1:实现2个终端之间的互相聊天 要求:千万不要做出来2个终端之间的消息发送是读一写的&#xff0c;一定要能够做到&#xff0c;一个终端发送n条消息&#xff0c;另一个终端一条消息都不回复都是没有问题的 终端A&#xff1a; #include<myhead.h> int main(int argc, char…

测开面经(pytest测试案例,接口断言,多并发断言)

pytest对用户登录接口进行自动化脚本设计 a. 创建一个名为"test_login.py"的测试文件&#xff0c;编写以下测试脚本 import pytest import requests# 测试用例1&#xff1a;验证登录成功的情况 # 第一个测试用例验证登录成功的情况&#xff0c;发送有效的用户名和密…

three.js零基础入门超全超细的教程整理(一)

事情是这样的&#xff1a; 有一天 我干完活 看技术文章 发现了three.js 诶&#xff01;这玩应挺有意思 盘盘 于是第一天找教程 上官网 初上手 第二天 找案例 渲模型 试VR 第三天 捋文档 然后来活了 没时间捋了 下面是集百家精华教程的整理总结 涉及到教程方面有加源作者和地址…

AI智能分析盒子在工地的应用,提高工地管理效率和安全性

工地ai智能分析盒子是一种基于人工智能视觉分析技术的人工智能盒子&#xff0c;旨在提升工地作业区域的管理效率和保障作业人员的安全。通过最前沿的AI视觉算法、大数据&#xff0c;能够实时监控工地现场视频流画面&#xff0c;对施工工地人员的工作着装及日常作业行为进行规范…

【多线程】进程(进程的概念+进程的管理+PCB(进程控制块)+进程的调度)

文章目录 进程一、计算机的组成&#xff1a;1.指令&#xff08;Instruction&#xff09; 二、浅谈操作系统1.日常的操作系统1.操作系统内核内核&#xff1a;进程的隔离性&#xff1a; 三、进程&#xff08;process&#xff09;1.进程的概念2.进程的管理1.管理的两个角度&#x…

短视频有效粉丝不够怎么涨?有效粉丝不满足500怎么解决?不够500有效粉丝怎么挂橱窗?

在这个流量主导的短视频时代&#xff0c;想要在短视频平台上增加粉丝数量并非易事。然而随着短视频平台规则更新4月16日开始&#xff0c;不能满足五百有效粉丝&#xff0c;就不能挂橱窗了&#xff0c;对一些有效粉丝不够的用户来说&#xff0c;这个的确是有点麻烦&#xff0c;而…

Mysql底层原理二:Buffer Pool

1.数据区 就是描述信息缓存页这块&#xff0c;用来存放从磁盘加载的数据页&#xff08;看上图 索引页和数据页是分开的&#xff09; 2. free链表 用来标识数据区哪些数据页是可用的 3. flush链表 update的时候&#xff0c;如果数据在数据区可以找到&#xff0c;那就直接内…