Algorithm
本周的算法题为 1222. 可以攻击国王的皇后
在一个 下标从 0 开始 的 8 x 8
棋盘上,可能有多个黑皇后和一个白国王。
给你一个二维整数数组 queens
,其中 queens[i] = [xQueeni, yQueeni]
表示第 i
个黑皇后在棋盘上的位置。还给你一个长度为 2
的整数数组 king
,其中 king = [xKing, yKing]
表示白国王的位置。
返回 能够直接攻击国王的黑皇后的坐标。你可以以 任何顺序 返回答案。
示例 1:
输入:queens = [[0,1],[1,0],[4,0],[0,4],[3,3],[2,4]], king = [0,0]
输出:[[0,1],[1,0],[3,3]]
解释:上面的图示显示了三个可以直接攻击国王的皇后和三个不能攻击国王的皇后(用红色虚线标记)。
实现代码如下:
var queensAttacktheKing = function(queens, king) {
// 初始化棋盘
const board = Array.from({ length: 8 }, () => Array.from({ length: 8 }, () => null));
// 将皇后的位置标记在棋盘上
queens.forEach((queen) => {
board[queen[0]][queen[1]] = 'Q';
});
const res = [];
// 顺时针方向遍历棋盘
const directions = [
[-1, 0],
[-1, 1],
[0, 1],
[1, 1],
[1, 0],
[1, -1],
[0, -1],
[-1, -1]
];
for (const element of directions) {
const [dx, dy] = element;
let x = king[0] + dx;
let y = king[1] + dy;
while (x >= 0 && x < 8 && y >= 0 && y < 8) {
if (board[x][y] === 'Q') {
res.push([x, y]);
break;
}
x += dx;
y += dy;
}
}
return res;
};
解题思路:
-
首先初始化一个 8*8
的棋盘,将皇后的位置标记在棋盘上; -
以国王为坐标系原点,顺时针遍历国王周围的 8
个方向,每次沿着一个方向遍历到边界,如果遇到皇后,将其坐标加入结果数组; -
返回结果数组。
Review
Hollywood actor says OpenAI Sora could cause job losses
好莱坞制片人兼演员泰勒·佩里担心人工智能将导致电影行业的就业岗位减少。他举了一个个人的例子来说明这种情况正在发生。他说他计划进行8亿美元的电影工作室扩建项目,但已经推迟了这个项目的实施,等待看看人工智能的发展情况。他认为人工智能将对就业产生巨大的影响。他在接受《好莱坞报道》网站采访时表达了他的担忧。他说:“必须有一些规定来保护我们(免受人工智能的影响)。如果没有,我就看不出我们如何生存下去。”他说OpenAI的新文字转视频工具Sora让他推迟了工作室的计划,他说他的项目“因为Sora和我看到的东西而搁置了”。
Sora是一个新的工具,可以生成长达一分钟的视频。用户只需输入提示,软件就会创建一个视频。它还可以根据一张照片创建视频。Sora的名称来自日语单词“天空”,纽约时报说这是为了展示工具的“无限创意潜力”。泰勒·佩里表示,他理解人工智能在电影制作中的有用性,但他担心会导致就业岗位减少。他说:“这让我非常担心行业中的所有人。我立刻开始考虑到受到影响的行业中的所有人,包括演员和编辑。”他补充道:“我认为这将触及我们行业的每个角落。”
注:我只想到《浪客剑心》里那句台词:“创造时代的并不是刀,而是使用刀的人。”
Tip
git clone fatal:发送请求时出错...
在使用git clone
项目时,提示以下信息,然后一直需要提示输入用户名和密码。
fatal: 发送请求时出错。
fatal: 服务器提交了协议冲突. Section=ResponseStatusLine
从上面可知,应该是git配置上面出现了问题,所以就打算将git
配置初始化,通过以下命令查看git
配置文件所在位置,并将所有.gitconfig
文件全都删除。
git config --list --show-origin
重新打开Git Bash Here
,使用以下命令,然后配置Git
在本地存储凭据信息,以便自动记住用户名和密码,避免每次进行Git
操作时都需要输入凭据信息。
git config --global credential.helper store
然后只要输入一次用户名和密码,后续操作就都不需要输入了。
Share
研发效能度量实践者指南(万字长文)-腾讯云开发者社区-腾讯云 (tencent.com)
-
“我虽然没有功劳,但是我也有苦劳。” 大部分人可能只关注自己的付出,但并不关心付出所获得的实际效果。作为管理者应该为“苦劳鼓掌,为功劳付钱”。而功劳和苦劳的体现也需要借助客观的度量数据来体现,否则团队中的成员会逐渐陷入碌碌无为的窘境。 -
管理者往往会把目标拆解为可度量的指标。但是,目标和指标常常并不是简单的全局与局部的关系。目标的拆解过程看起来很顺畅,是那么地理所当然,但是当把拆解完的指标合并起来的的时候,结果往往让人哭笑不得。有一个笑话说的是,“你问人工智能,我要找一个女朋友,像安·海瑟薇一样的大眼睛,像朱莉娅·罗伯茨一样的大嘴,喜爱运动,陆上运动、水上运动都会。人工智能就根据这几个指标给出了母青蛙的答案”。所以,指标和目标常常并不是充分必要的关系。 -
指标是为了实现目标的,但是在实践过程中,指标很多时候却是与目标为敌的。管理者常常把目标拆解为指标,时间久了以后,他就只知道指标,而忘了背后更重要的目标。如果目标是林,那么指标就是木,时间久了就是只见树木,不见森林。这个时候忘记了目标是什么的管理者就会变得非常短视。那些不懂数据的人很糟糕,而最最糟糕的人是那些只看数字的人。在福特汽车的发展史上,有一段至暗时期。那些实践经验丰富,但是没有上过商学院的的老一辈管理层被干掉,取而代之的名校管理背景的数据分析师,公司试图通过精细化的数字管理来实现业务的增长。由于这些数据分析师并不熟悉业务,所以就只能看度量数据,越是不懂业务就越依赖度量数据来做决策,最后使整个公司陷入了泥潭。软件研发也有类似的尴尬,为了更好的代码质量,所以就制定了严格的代码测试覆盖率要求。时间一久,大家都机械性地追求这个指标,而忘记了当时设立这个指标的初衷,于是就出现了高覆盖率的大量单元测试中没有断言这样尴尬的局面。
本文由 mdnice 多平台发布