首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >重新排列列表以满足条件

重新排列列表以满足条件
EN

Stack Overflow用户
提问于 2022-07-05 06:33:43
回答 1查看 51关注 0票数 0

我在一次编码面试中被问到这个问题,但没能解决这个问题。任何指点都会很有帮助。

我得到了一个整数列表(把它看作一个数字行),它需要重新排列,以便元素之间的差异等于M (给定的整数)。需要重新排列列表,以便将max absolute difference between the elements' new positions and the original positions的值降到最低。最后,返回此值乘以2。

测试用例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//1.
original_list = [1, 2, 3, 4]
M = 2
rearranged_list = [-0.5, 1.5, 3.5, 5.5]
// difference in values of original and rearranged lists
diff = [1.5, 0.5, 0.5, 1.5]
max_of_diff = 1.5 // list is rearranged in such a way so that this value is minimized
return_val = 1.5 * 2 = 3 

//2. 
original_list = [1, 2, 4, 3]
M = 2
rearranged_list = [-1, 1, 3, 5]
// difference in values of original and rearranged lists
diff = [2, 1, 1, 2]
max_of_diff = 2 // list is rearranged in such a way so that this value is minimized
return_val = 2 * 2 = 4 

Constraints:
1 <= list_length <= 10^5
1 <= M <= 10^4
-10^9 <= list[i] <= 10^9

关于leetcode有一个非常类似的问题:https://leetcode.com/problems/minimize-deviation-in-array/,但是在这里,在数组上执行的操作被提到,而这里没有提到。我真的很困惑。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-05 07:17:41

下面是你如何看待它的方法:

“后置”列表就像一条直线,其斜率对应于M。

下面是第一个示例的可视化:

黑点是输入值1,2,3,4,其中数组的索引是X坐标,而该索引的实际值是Y坐标。

绿线由M确定。最初,这条线在(0,0)处穿过原点。红线段表示必须考虑的差异。

现在绿线必须垂直移动到它的最佳位置。我们可以看到,我们只需要看看它对第一点和最后一点所产生的影响。另外两种投入永远不会造成极端。这通常是正确的:只有两个输入元素需要考虑。它们是最大的(签署的--不是绝对的)差别和最小的差别。

我们可以看到,我们需要以这样一种方式移动绿线,即与这两个极端的符号差异是相互对立的,即它们的绝对差异是相同的,但符号是相反的。

这种绝对差异是我们需要返回的两倍,它实际上是最大(有符号)差和最小(有符号)差之间的区别。

因此,最后,我们必须生成绿线上的值,找出与数据点(Y-坐标)的最小和最大(有符号)差,并返回两者之间的差值。

下面是JavaScript中的一个实现,运行您提供的两个示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function solve(y, slope) {
    let low = Infinity;
    let high = -Infinity;
    for (let x = 0; x < y.length; x++) {
        let dy = y[x] - x * slope;
        low = Math.min(low, dy);
        high = Math.max(high, dy);
    }
    return high - low;
}

console.log(solve([1, 2, 3, 4], 2)); // 3
console.log(solve([1, 2, 4, 3], 2)); // 4

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72871195

复制
相关文章
python自动下载并更新chromedriver驱动
python用senium调用chrome时,需要使用chromedriver驱动,这个驱动需要对应chrome的版本。 而chrome又经常在后台偷偷升级,如果没关掉升级,之前的驱动又用不了。 其实用webdriver-manager听说也可以,但是他要到国外下载驱动,没办法使用。 这点很愁人,所以我这边开发了一个python自动下载并更新chromedriver驱动的程序。
星痕
2022/03/04
2.4K0
Chromedriver(谷歌浏览器驱动)安装教程「建议收藏」
这个报错一般都是第一次学习使用selenium自动化框架的时候出现的,主要的原因是因为selenium模拟的客户端对浏览器的操作,但没有找到相应浏览器的驱动导致的
全栈程序员站长
2022/08/18
6.7K0
Chromedriver(谷歌浏览器驱动)安装教程「建议收藏」
Python爬虫常用:谷歌浏览器驱动——Chromedriver 插件安装教程
我们在做爬虫的时候经常要使用谷歌浏览器驱动,今天分享下这个Chromedriver 插件的安装方法。
全栈程序员站长
2022/08/26
2.1K0
Python爬虫常用:谷歌浏览器驱动——Chromedriver 插件安装教程
安装Selenum的Chromedriver
http://chromedriver.storage.googleapis.com/index.html
老高的技术博客
2022/12/27
3250
安装Selenum的Chromedriver
Python 和 Selenium 的浏览器爬虫
Selenium 是一款强大的基于浏览器的开源自动化测试工具,最初由 Jason Huggins 于 2004 年在 ThoughtWorks 发起,它提供了一套简单易用的 API,模拟浏览器的各种操作,方便各种 Web 应用的自动化测试。
HoneyMoose
2023/09/20
3980
Python 和 Selenium 的浏览器爬虫
铬镍不锈钢的切削加工
  1Cr18Ni9Ti不锈钢的强度硬度很低(硬度≤187HB),而塑性很高,具有良好的耐酸性、耐腐蚀性。经固溶处理后的机械性能,屈服强度s0.2≥205MPa,抗拉强度sb≥520MPa,伸长率d5≥40%,收缩率y≥50%,用常规牌号的硬质合金刀具和常规方法加工很困难,原因是该材料的塑性及韧性较大,容易产生粘刀现象,断屑困难,同时产生振动,使刀具容易崩刃、磨损。
lrglu
2022/03/30
6640
铬镍不锈钢的切削加工
分享一个chromedriver谷歌浏览器驱动全部下载网址
https://npm.taobao.org/mirrors/chromedriver/
我去热饭
2022/05/18
1.1K0
java selenium chromedriver浏览器驱动放在哪里?【两种位置】
这个位置可以自己指定 比如将驱动放在项目根路径 D:\a-project\mqtest\ 需要在代码中指明driver的路径(绝对路径或相对路径),代码如下
小黑同学
2020/08/16
3.9K0
java selenium浏览器驱动 chromedriver放在哪里?【两种位置】
这个位置可以自己指定 比如将驱动放在项目根路径 D:\a-project\mqtest\ 需要在代码中指明driver的路径(绝对路径或相对路径),代码如下
小黑同学
2022/05/10
2.7K0
java selenium浏览器驱动 chromedriver放在哪里?【两种位置】
windows chromedriver 下载失败
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
云雀叫了一整天
2019/09/29
1.1K0
chromedriver 换了116的版本,还是不行?
前几天在Python最强王者群【我叫石国志】问了一个selenium使用过程中浏览器驱动报错的问题,下图是他的报错截图。
前端皮皮
2023/09/11
4650
chromedriver 换了116的版本,还是不行?
Xilinx下载器驱动提示“系统找不到指定的路径”的解决办法
本篇记录了本人解决xilinx下载器驱动安装问题(装驱动提示错误如下图)。主要过程就是更新到win10,再重装驱动即可,最后测试在Vivado2015.3中可以成功下载调试。
FPGA技术江湖
2020/12/30
1.5K0
Xilinx下载器驱动提示“系统找不到指定的路径”的解决办法
mac 搭建selenium与ChromeDriver环境安装 selenium安装 ChromeDriver验证安装
下载后,将安装包加入到环境变量。以mac系统为例,将chromedriver移至/usr/bin目录下即可
章鱼喵
2018/09/26
3.9K0
mac 搭建selenium与ChromeDriver环境安装 selenium安装 ChromeDriver验证安装
centos7安装chromedriver
2.安装chromedriver(需要下载与chrome版本匹配的安装包) 下载:https://npm.taobao.org/mirrors/chromedriver/
薛定喵君
2019/11/06
1.9K0
Mac OS环境配置chromedriver
selenium之 chromedriver与chrome版本映射表(更新至v2.29)
freesan44
2018/09/05
2.2K0
linux配置chrome和chromedriver
开始我报错是这样的:selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable may have wrong permissions
川川菜鸟
2021/10/18
1.8K0
Python 网页抓取库和框架
作为 Python 开发人员,您可以使用许多 Web 抓取工具。现在就来探索这些工具并学习如何使用它们。
用户8847084
2021/07/27
3.1K0
Web网页自动化实战《1.利用py第三方库selenium完成艺龙网访问操作》
安装python3.5以上版本,不要装最新版本,最新版本的python可能会有bug,老版本更稳定一些。
清菡
2022/06/21
7460
Web网页自动化实战《1.利用py第三方库selenium完成艺龙网访问操作》
安装Chrome(Headless)并在python中使用
Chrome(Headless)即为Chrome的Headless模式,又称为无头浏览器
wo.
2021/06/15
3.7K0
点击加载更多

相似问题

找不到硒铬驱动程序

10

硒WebDriver -找不到铬二进制

710

铬驱动器-硒

31

硒找不到chromedriver.exe

26

码头硒/节点-铬-量角器找不到铬二进制

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文