2022-01-03:比如arr = {3,1,2,4}, 下标对应是:0 1 2 3, 你最开始选择一个下标进行操作,一旦最开始确定了是哪个下标,以后都只能在这个下标上进行操作。 比如你选定1下标,
2022-01-03:比如arr = {3,1,2,4},
 下标对应是:0 1 2 3,
 你最开始选择一个下标进行操作,一旦最开始确定了是哪个下标,以后都只能在这个下标上进行操作。
 比如你选定1下标,1下标上面的数字是1,你可以选择变化这个数字,比如你让这个数字变成2,
 那么arr = {3,2,2,4}。
 下标对应是:0 1 2 3,
 因为你最开始确定了1这个下标,所以你以后都只能对这个下标进行操作,
 但是,和你此时下标上的数字一样的、且位置连成一片的数字,会跟着一起变。
 比如你选择让此时下标1的数字2变成3,
 那么arr = {3,3,3,4} 可以看到下标1和下标2的数字一起变成3,这是规则!一定会一起变。
 下标对应是:0 1 2 3,
 接下来,你还是只能对1下标进行操作,那么数字一样的、且位置连成一片的数字(arr[0~2]这个范围)都会一起变,
 决定变成4。
 那么arr = {4,4,4,4},
 下标对应是:0 1 2 3,
 至此,所有数都成一样的了,你在下标1上做了3个决定(第一次变成2,第二次变成3,第三次变成4),
 因为联动规则,arr全刷成一种数字了。
 给定一个数组arr,最开始选择哪个下标,你随意,
 你的目的是一定要让arr都成为一种数字,注意联动效果会一直生效,
 返回最小的变化数。
 arr长度 <= 200, arr中的值 <= 10^6。
 来自腾讯。
答案2022-01-03:
递归。
代码用golang编写。代码如下:
package main
import (
    "fmt"
    "math"
)
func main() {
    ret := process([]int{3, 1, 2, 4}, 2, 2, 2)
    fmt.Println(ret)
}
func process(arr []int, left, midV, right int) int {
    for left >= 0 && arr[left] == midV {
        left--
    }
    for right < len(arr) && arr[right] == midV {
        right++
    }
    if left == -1 && right == len(arr) {
        return 0
    }
    p1 := math.MaxInt64
    if left >= 0 {
        p1 = process(arr, left-1, arr[left], right) + 1
    }
    p2 := math.MaxInt64
    if right < len(arr) {
        p2 = process(arr, left, arr[right], right+1) + 1
    }
    return getMin(p1, p2)
}
func getMin(a, b int) int {
    if a < b {
        return a
    } else {
        return b
    }
}
执行结果如下:
 
2022-01-03:比如arr = {3,1,2,4}, 下标对应是:0 1 2 3, 你最开始选择一个下标进行操作,一旦最开始确定了是哪个下标,以后都只能在这个下标上进行操作。 比如你选定1下标,的更多相关文章
- Tensorflow学习笔记2019.01.03
		
tensorflow学习笔记: 3.2 Tensorflow中定义数据流图 张量知识矩阵的一个超集. 超集:如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S ...
 - Dapr中国社区活动之 分布式运行时开发者日 (2022.09.03)
		
自2019年10月首次发布以来,Dapr(Distributed Application Runtime,分布式应用运行时)因其"更稳定"."更可靠".&quo ...
 - 当使用了相对路径  <base href="<%= basePath %>" />  后,全局都只能使用相对路径
		
<% String path = request.getContextPath(); String basePath = request.getScheme() + "://" ...
 - 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(上) 微信、QQ、新浪微博等第三方登录,你想知道的都在这了(下)
		
微信.QQ.新浪微博等第三方登录,你想知道的都在这了(上):https://www.jianshu.com/p/133d84042483 微信.QQ.新浪微博等第三方登录,你想知道的都在这了(下):h ...
 - 求你了,别再说Java对象都是在堆内存上分配空间的了!
		
Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解.可以说,关于JVM的相关知识,基本是每个Java开发者 ...
 - 别再说Java对象都是在堆内存上分配空间的了!
		
Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点,所以,即使是一个Java的初学者,也一定或多或少的对JVM有一些了解.可以说,关于JVM的相关知识,基本是每个Java开发者 ...
 - JVM知识(一) 求你了,别再说Java对象都是在堆内存上分配空间的了!
		
求你了,别再说Java对象都是在堆内存上分配空间的了! https://baijiahao.baidu.com/s?id=1661296872935371634&wfr=spider& ...
 - 10. Scala数据结构(上)-集合操作
		
10.1 数据结构特点 10.1.1 Scala集合基本介绍 uml => 统一建模语言 1) Scala同时支持不可变集合和可变集合,不可变集合可以安全的并发访问 两个主要的包 不可变集合:s ...
 - 对于不平凡的我来说,从小我就在想为啥别人就什么都能拥有,而看看自己却什么都没有,对于原来的我就会抱怨爸妈怎么没有别人父母都能给自己想要的,可我从未想过父母的文化只有小学,其实父母内心也有太多的辛酸,所以我不甘愿如此,从此让我在大学里面直接选择一个让我巨大的转折————IT。
		
对于不平凡的我来说,从小我就在想为啥别人就什么都能拥有,而看看自己却什么都没有,对于原来的我就会抱怨爸妈怎么没有别人父母都能给自己想要的,可我从未想过父母的文化只有小学,其实父母内心也有太多的辛酸,所 ...
 - [原创]gerrit上分支操作记录(创建分支、删除分支)
		
Git分支对于一个项目的代码管理而言,是十分重要的! 许多久用git的朋友可能已经掌握的很牢固了,但对于一些初涉git的童鞋来说,可能还不是很熟悉. 在此,我将自己的一些操作经历做一梳理,希望能帮助到 ...
 
随机推荐
- bash中的basename与dirname以及${}
			
var=/dir1/dir2/file.tar.gz basename $var #获取文件名 file.tar.gz dirname $var #获取目录名称 / ...
 - 信创国产化,试试 Solon v2.2.2
			
Solon 是一个高效的 Java 应用开发框架:更快.更小.更简单.它不是 Spring.没有用 Servlet.也无关 JavaEE,是一个有自己接口标准的开放生态.可以为应用软件国产化提供支持, ...
 - pugixml XML格式处理库的介绍和使用(面向业务编程-格式处理)
			
pugixml XML格式处理库的介绍和使用(面向业务编程-格式处理) 介绍 pugixml是一个轻量级的C++ XML处理库.它的特点: 类似dom的界面,具有丰富的遍历/修改功能 非常快速的非验证 ...
 - 使用RPA有什么好处
			
通过本章学习,您将了解到: 什么是RPA RPA能为我们做些什么 使用RPA有什么好处 RPA的体系结构是什么 应用RPA是否需要深入了解这项技术 RPA的未来趋势怎么样 什么是RPA? RPA即Ro ...
 - D3和X6
			
D3 版本 d3已经更新到v7版本,中文文档只更新到v4版本,存在部分api不适用和过时问题 使用d3-darge插件布局,插件适配d3版本为v5,近年未更新 API 使用darge中setNode和 ...
 - IO 与 NIO之网络通信
			
一.阻塞IO / 非阻塞NIO 阻塞IO:当一条线程执行 read() 或者 write() 方法时,这条线程会一直阻塞直到读取到了一些数据或者要写出去的数据已经全部写出,在这期间这条线程不能做任何其 ...
 - import tensorflow出现ImportError: DLL load failed: 找不到指定的模块的问题(亲测可用)
			
错误如下图所示: 在很长时间的查找后,网上的很多办法都不能很好的解决问题,但是基本上指向了一个问题--版本问题,所以接下来我安装了与python环境对应的tensorflow包. 首先用以下命令查找对 ...
 - Spring(Ioc和Bean的作用域)
			
Spring Spring为简化开发而生,让程序员只关心核心业务的实现,尽可能的不在关注非业务逻辑代码(事务控制,安全日志等). 1,Spring八大模块 这八大模块组成了Spring 1.1 Spr ...
 - 在react中使用wangEditorV5
			
wangEditor是基于JavaScript和css的一款web富文本编辑器,是国内比较好用的一款轻量级富文本编辑器,上手简单,易用且开源免费. 官方文档:http://www.wangeditor ...
 - Python3.8环境安装PyHook3
			
Python3.8环境安装PyHook3 1. 安装python对应版本的pyhook3网 址:https://pypi.org/project/PyHook3/#files如果没有对应版本,请下载 ...