2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置,序号为N-1 的点是终点位置。现在需要依次的从 0 号点走到 N-1 号点。但是除了 0 号点和 N-1 号点,他可以在其余的 N-2 个位置中选出一个点,并直接将这个点忽略掉,问从起点到终点至少走多少距离?

福哥答案2021-03-10:

数组[1,4,-1,3],忽略序号1,数组变成[1,-1,3],距离是abs(-2)+4=6;忽略序号2,数组变成[1,4,3],距离是3+1=4。

N-2 个坐标中选出一个点,并直接将这个点忽略掉。直接忽略一个点只会直接影响到,这个节点前后节点的距离。这个 影响的距离我们暂且命名为优化距离,将所有节点按顺序组成三个节点的集合,通过这种方式只需要通过一次循环便能得到结果。



代码用golang编写,代码如下:

package main

import "fmt"

func main() {
arr := []int{1, 4, -1, 3}
fmt.Println(shortDistance(arr))
}
func shortDistance(arr []int) int {
arrLen := len(arr)
if arrLen <= 1 {
return 0
}
if arrLen <= 3 {
return abs(arr[arrLen-1] - arr[0])
}
i1 := arr[1] - arr[0]
i2 := 0
maxval := 0 //最大优化距离
ret := abs(i1) //所有相邻两边距离之和 for i := 1; i < arrLen-1; i++ {
i2 = arr[i+1] - arr[i] maxval = getMax(maxval, abs(i2)+abs(i1)-abs(i2+i1)) i1 = i2
ret += abs(i1)
} return ret - maxval
}
func abs(a int) int {
if a < 0 {
return -a
} else {
return a
}
}
func getMax(a int, b int) int {
if a > b {
return a
} else {
return b
}
}

执行结果如下:


评论

2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置,序号为N-1 的点是终点位置。现在需要依次的从 0 号点走到 N-1 号点。但是除了 0 号点和 N-1 号点,他可以在其余的 N-2 个位置中选出一个点,并直接将这个点忽略掉,问从起点到终点至少走多少距离?的更多相关文章

  1. C语言:假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母。-利用折半查找整数m在有序数组中的位置,若找到,返回下标值,否则返回-1。

    //假定输入的字符串只包含字母和*号,fun函数:除了尾部的*号以外,将字符的其他*号进行全部删除,形参p已经指向字符串中最后一个字母. #include <stdio.h> void f ...

  2. 在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

    //在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10 ...

  3. 2021.12.10 P5041 [HAOI2009]求回文串(树状数组求逆序对)

    2021.12.10 P5041 [HAOI2009]求回文串(树状数组求逆序对) https://www.luogu.com.cn/problem/P5041 题意: 给一个字符串 \(S\) ,每 ...

  4. 03 . Gin+Vue开发一个线上外卖应用(用户数据创建,插入,跨域处理)

    功能和背景介绍 在项目的登录功能中,如果在登录时发现用户名和密码在用户表中不存在,会自动将用户名和密码保存在用户表中,创建一个新的用户. 因此,除了使用手机号和验证码登录以外,还支持使用用户名.密码进 ...

  5. js实现随机选取[10,100)中的10个整数,存入一个数组,并排序。 另考虑(10,100]和[10,100]两种情况。

    1.js实现随机选取[10,100)中的10个整数,存入一个数组,并排序. <!DOCTYPE html> <html lang="en"> <hea ...

  6. 2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组)

    2021.12.10 P2516 [HAOI2010]最长公共子序列(动态规划+滚动数组) https://www.luogu.com.cn/problem/P2516 题意: 给定字符串 \(S\) ...

  7. 4.产生10个1-100的随机数,并放到一个数组中 (1)把数组中大于等于10的数字放到一个list集合中,并打印到控制台。 (2)把数组中的数字放到当前文件夹的numArr.txt文件中

    package cn.it.text; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayLis ...

  8. Codeforces Round #283 (Div. 2) A. Minimum Difficulty【一个数组定义困难值是两个相邻元素之间差的最大值。 给一个数组,可以去掉任意一个元素,问剩余数列的困难值的最小值是多少】

    A. Minimum Difficulty time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  9. (Java基础--Spring阶段)常见面试题题目及解析整理(2021.03.12)

    题目整理 Java基础进阶阶段 基础概念类 1.JDK1.8新特性? 2.面向对象和面向过程的区别? 3.什么是值传递和引用传递? 4.什么是不可变对象? 5.讲讲类的实例化顺序? 6.java 创建 ...

  10. 2021.11.10 fail树

    2021.11.10 fail树 https://blog.csdn.net/niiick/article/details/87947160 1. AC自动机与fail树的神奇关系 1.1 AC自动机 ...

随机推荐

  1. mininet配置命令

    Mininet实验手册 一.安装 1.  直接使用带有完整软件的VM(略) 2.  源码安装 1)  下载 git clone git://github.com/mininet/mininet 2)  ...

  2. Markdown操作方法

    Markdown学习 标题 三级标题 四级标题 字体 原本 hello,world! 斜体 hello,world! 加粗 hello,world! 斜体加粗 hello,world! 删除 hell ...

  3. SqlServer获取一周内每天的金额统计数据

    select datename(weekday,CAST([CompletedTime] AS date)) WeekNum, CAST([CompletedTime] AS date) AS 'Da ...

  4. (转)codeblocks 使用研究

    原帖:http://github.tiankonguse.com/blog/2014/10/11/codeblocks-shutcut.html 使用前 使用 codeblocks 前肯定是下载安装 ...

  5. 研发效能负责人/研发效能1号位 |DevOps负责人

    想要做好业务,老板们除了要梳理好公司级别的业务目标,公司的组织架构,还要搭个有产出的班子,也就是找负责人.建团队,让组织架构充实起来.搭班子最重要的就是把负责人找到,就是团队1号位的人.本文主要讲团队 ...

  6. 详解ResNet 网络,如何让网络变得更“深”了

    摘要:残差网络(ResNet)的提出是为了解决深度神经网络的"退化"(优化)问题.ResNet 通过设计残差块结构,调整模型结构,让更深的模型能够有效训练更训练. 本文分享自华为云 ...

  7. Flutter 2 渲染原理和如何实现视频渲染

    7 月 17 日下午,在前端专场巡回沙龙北京站中,声网Agora跨平台开发工程师卢旭辉带来了<Flutter2 渲染原理和如何实现视频渲染>的主题分享,本文是对演讲内容的整理. 本次分享主 ...

  8. 博客与AI

    最近AI自动生成技术文章和答案在圈子里面引起了很大轰动,Stack Overflow暂时拒绝接收GPT生成的结果.我也经常性地浏览或者编写博客,但是最近我使用new bing或者ChatGPT的过程中 ...

  9. <K, V>型缓存:LRU策略 FIFO策略

    <K, V>型缓存:LRU策略 FIFO策略 这两种替换策略都是通过 LinkedHashMap 实现 LinkedHashMap: LinkedHashMap 继承自 HashMap,所 ...

  10. 一次对pool的误用导致的.net频繁gc的诊断分析

    (最近有读者朋友表示,希望能加一些示意图来描述分析过程中用到的原理知识.好的,之后我会注意,谢谢这位读者) 背景 有位朋友找我,希望我能帮看一下他的一个service.从他的描述看,并没有资源方面的泄 ...