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的童鞋来说,可能还不是很熟悉. 在此,我将自己的一些操作经历做一梳理,希望能帮助到 ...
随机推荐
- Hadoop-HA节点介绍
设计思想 hadoop2.x启用了主备节点切换模式(1主1备) 当主节点出现异常的时候,集群直接将备用节点切换成主节点 要求备用节点马上就要工作 主备节点内存几乎同步 有独立的线程对主备节点进行监控健 ...
- 学习ASP.NET Core Blazor编程系列三十——JWT登录(4)
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一--综述 学习ASP.NET Core Blazor编程系列二--第一个Blazor应 ...
- 面试突击:MVCC 和间隙锁有什么区别?
MVCC 和间隙锁是两种完全不同的机制,但它们的目的都是相同的,都是用来保证数据库并发访问的,我们先来看二者的定义. MVCC 定义 MVCC 是多版本并发控制(Multi-Version Concu ...
- 【Java SE】多线程
1.1 线程的生命周期  方法名 说明 yield() stop() sleep() w ...
- 【Vue】二
一个第三方js处理类库 BootCDN Vue过滤器 Date.now() 获取时间戳 Date.now() 1652411231222 计算属性实现 <body> <div id= ...
- css 利用 linear-gradient 实现条纹背景
1. 水平条纹背景 当给背景设置渐变效果时,默认的渐变方向是垂直由上到下的,效果如下: { background: linear-gradient(#aaa, #ddd); } 尝试拉近色标的距离,会 ...
- DeFi4-稳定币
稳定币--稳定 是一个相对的度量指标 波动性,收益率标准差 在一个时间段内最大跌幅 Fiat,例如: 欧元.英镑的波动率为6-12% (波动本身并不能反映价格的范围 稳定币 vs 锚定币 稳定币类型 ...
- Node.js入门学习笔记
NodeJs是js的运行时,意味着可以在浏览器外运行js.可以使用nodejs来构建服务器端应用.CLI应用.Web API,甚至用electron构建桌面端应用. 使用nvm来管理node版本. 在 ...
- [SDR] GNU Radio 系列教程(十四) —— GNU Radio 低阶到高阶用法的分水岭 ZMQ 的使用详解
目录 1.前言 2.ZMQ 块的类型 3.ZMQ 块的使用 4.DEMO 4.1 同一台电脑上的两个流程图 4.2 不同电脑上的两个流程图 4.3 作为 REQ/REP 服务器的 Python 程序 ...
- 机器学习07-(中文分词、样本类别均衡化、置信概率、k-means聚类算法、均值漂移聚类算法)
机器学习-07 机器学习-07 中文分词(jieba) 样本类别均衡化 置信概率 聚类模型 K均值算法 均值漂移算法 轮廓系数 DBSCAN算法 推荐引擎 代码总结 结巴分词 酒店评论舆情分析 针对测 ...