<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>动态规划 on 一共十七划</title>
		<link>https://noirzh.com/tags/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/</link>
		<description>Recent content in 动态规划 on 一共十七划</description>
		<generator>Hugo</generator>
		<language>zh-CN</language>
		
		
		
		
			<lastBuildDate>Tue, 07 Nov 2023 10:37:15 +0800</lastBuildDate>
		
			<atom:link href="https://noirzh.com/tags/%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>题解-最长相邻不相等子序列 II</title>
				<link>https://noirzh.com/solution-longest-unequal-adjacent-groups-subsequence-ii/</link>
				<pubDate>Sun, 15 Oct 2023 02:42:00 +0800</pubDate>
				<guid>https://noirzh.com/solution-longest-unequal-adjacent-groups-subsequence-ii/</guid>
				<description>&lt;blockquote&gt;&#xD;&#xA;&lt;p&gt;Problem:&lt;a href=&#34;https://leetcode.cn/problems/longest-unequal-adjacent-groups-subsequence-ii/description/&#34;&gt;最长相邻不相等子序列&lt;/a&gt;&lt;/p&gt;&#xD;&#xA;&lt;/blockquote&gt;&#xD;&#xA;&lt;h2&gt;&lt;strong&gt;题目&lt;/strong&gt;&lt;/h2&gt;&#xD;&#xA;&lt;p&gt;给你一个整数 &lt;code&gt;n&lt;/code&gt; 和一个下标从 &lt;strong&gt;0&lt;/strong&gt; 开始的字符串数组 &lt;code&gt;words&lt;/code&gt; ，和一个下标从 &lt;strong&gt;0&lt;/strong&gt; 开始的数组 &lt;code&gt;groups&lt;/code&gt; ，两个数组长度都是 &lt;code&gt;n&lt;/code&gt; 。&lt;/p&gt;&#xD;&#xA;&lt;p&gt;两个长度相等字符串的 &lt;strong&gt;汉明距离&lt;/strong&gt; 定义为对应位置字符 &lt;strong&gt;不同&lt;/strong&gt; 的数目。&lt;/p&gt;&#xD;&#xA;&lt;p&gt;你需要从下标 &lt;code&gt;[0, 1, ..., n - 1]&lt;/code&gt; 中选出一个 &lt;strong&gt;最长子序列&lt;/strong&gt; ，将这个子序列记作长度为 &lt;code&gt;k&lt;/code&gt; 的 &lt;code&gt;[i&lt;sub&gt;0&lt;/sub&gt;, i&lt;sub&gt;1&lt;/sub&gt;, ..., i&lt;sub&gt;k - 1&lt;/sub&gt;]&lt;/code&gt; ，它需要满足以下条件：&lt;/p&gt;&#xD;&#xA;&lt;ul&gt;&#xD;&#xA;&lt;li&gt;&lt;strong&gt;相邻&lt;/strong&gt; 下标对应的 &lt;code&gt;groups&lt;/code&gt; 值 &lt;strong&gt;不同&lt;/strong&gt;。即，对于所有满足 &lt;code&gt;0 &amp;lt; j + 1 &amp;lt; k&lt;/code&gt; 的 &lt;code&gt;j&lt;/code&gt; 都有 &lt;code&gt;groups[i&lt;sub&gt;j&lt;/sub&gt;] != groups[i&lt;sub&gt;j + 1&lt;/sub&gt;]&lt;/code&gt; 。&lt;/li&gt;&#xD;&#xA;&lt;li&gt;对于所有 &lt;code&gt;0 &amp;lt; j + 1 &amp;lt; k&lt;/code&gt; 的下标 &lt;code&gt;j&lt;/code&gt; ，都满足 &lt;code&gt;words[i&lt;sub&gt;j&lt;/sub&gt;]&lt;/code&gt; 和 &lt;code&gt;words[i&lt;sub&gt;j + 1&lt;/sub&gt;]&lt;/code&gt; 的长度 &lt;strong&gt;相等&lt;/strong&gt; ，且两个字符串之间的 &lt;strong&gt;汉明距离&lt;/strong&gt; 为 &lt;code&gt;1&lt;/code&gt; 。&lt;/li&gt;&#xD;&#xA;&lt;/ul&gt;&#xD;&#xA;&lt;p&gt;请你返回一个字符串数组，它是下标子序列 &lt;strong&gt;依次&lt;/strong&gt; 对应 &lt;code&gt;words&lt;/code&gt; 数组中的字符串连接形成的字符串数组。如果有多个答案，返回任意一个。&lt;/p&gt;&#xD;&#xA;&lt;p&gt;&lt;strong&gt;子序列&lt;/strong&gt; 指的是从原数组中删掉一些（也可能一个也不删掉）元素，剩余元素不改变相对位置得到的新的数组。&lt;/p&gt;&#xD;&#xA;&lt;p&gt;&lt;strong&gt;注意：&lt;/strong&gt;&lt;code&gt;words&lt;/code&gt; 中的字符串长度可能 &lt;strong&gt;不相等&lt;/strong&gt; 。&lt;/p&gt;</description>
			</item>
			<item>
				<title>题解-移动机器人-数组计算的三种思考方式方式(动态规划,贡献,前缀和)与相关证明</title>
				<link>https://noirzh.com/posts/%E9%A2%98%E8%A7%A3-%E7%A7%BB%E5%8A%A8%E6%9C%BA%E5%99%A8%E4%BA%BA/</link>
				<pubDate>Tue, 10 Oct 2023 08:04:17 +0800</pubDate>
				<guid>https://noirzh.com/posts/%E9%A2%98%E8%A7%A3-%E7%A7%BB%E5%8A%A8%E6%9C%BA%E5%99%A8%E4%BA%BA/</guid>
				<description>&lt;blockquote&gt;&#xA;&lt;p&gt;Problem: &lt;a href=&#34;https://leetcode.cn/problems/movement-of-robots/description/&#34;&gt;2731. 移动机器人&lt;/a&gt;&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;!-- toc --&gt;&#xD;&#xA;&lt;h1 id=&#34;前述条件&#34;&gt;前述条件&lt;/h1&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;碰撞和&lt;a href=&#34;https://leetcode.cn/problems/last-moment-before-all-ants-fall-out-of-a-plank/description/&#34;&gt;1503. 所有蚂蚁掉下来前的最后一刻&lt;/a&gt;类似,注意到对于身份没有要求,所以可以直接认为两个机器人碰撞是交换了二者的身份,也可以认为是穿过去了&lt;/li&gt;&#xA;&lt;li&gt;因此能够得到机器人的最终位置,为了方便计算,我们排序&lt;/li&gt;&#xA;&lt;li&gt;数据量为$10^5$,暴力求解不现实&lt;/li&gt;&#xA;&lt;li&gt;以下是三种常用的解决方法,这三种思路最开始的进入方式不同,但是都能得出正确结果&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h1 id=&#34;两种对于距离的计算方法&#34;&gt;两种对于距离的计算方法&lt;/h1&gt;&#xA;&lt;p&gt;算法的时间复杂度均为$O(n)$&lt;/p&gt;&#xA;&lt;h2 id=&#34;动态规划&#34;&gt;动态规划&lt;/h2&gt;&#xA;&lt;h3 id=&#34;思考方式与证明&#34;&gt;思考方式与证明&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;假设已经计算出来了$a[i]$之前所有的机器人两两之间距离之和为$s$&lt;/li&gt;&#xA;&lt;li&gt;增加一个元素$a[i]$,观察其和之前的所有机器人之间的距离之和,能够发现&#xA;&lt;ol&gt;&#xA;&lt;li&gt;实际上就是与之前的每个元素计算距离&lt;/li&gt;&#xA;&lt;li&gt;$a[i]$与$a[0],a[1]&amp;hellip;.,a[i-1]$之间的距离实际上分别是是$a[i-1]$与$a[0]&amp;hellip;.,a[i-1]$之间的距离加上$a[i]$与$a[i-1]$之间的距离,共$i$个&lt;/li&gt;&#xA;&lt;li&gt;上述结论可以推导:&#xA;设$distance[i]$表示$a[i]$和$a[0],a[1]&amp;hellip;.,a[i-1]$之间的距离之和,有&#xA;$$ distance[i]=i*a[i]+distance[i-1] \distance[0]=0 $$&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;代码&#34;&gt;代码&lt;/h3&gt;&#xA;&lt;p&gt;可以看出来这个公式只与前一个状态有关,因此可以优化空间&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-Python3&#34; data-lang=&#34;Python3&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Solution&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;sumDistance&lt;/span&gt;(self, nums: List[int], s: str, d: int) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; int:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        mod&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1000000007&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        n&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;len(nums)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; i,a &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; enumerate(s):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            nums[i]&lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt;d &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; s[i]&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;R&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;d  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        nums&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sort()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        res&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        distance&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; range(&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;,n):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            distance&lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt;i&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;(nums[i]&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;nums[i&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]) &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#75715e&#34;&gt;#这个方法对于只int的话4*(10**9)会超范围&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            distance&lt;span style=&#34;color:#f92672&#34;&gt;%=&lt;/span&gt;mod  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            res&lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt;distance&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; res&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;mod&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;贡献距离法&#34;&gt;贡献距离法&lt;/h2&gt;&#xA;&lt;h3 id=&#34;思考方式&#34;&gt;思考方式&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;对于这种什么什么之和的问题可以考虑计算每个片段对结果的贡献&lt;/li&gt;&#xA;&lt;li&gt;在这个题目之中片段就是每个元素之间的距离,我们需要计算的就是这段距离在结果中出现了多少次&lt;/li&gt;&#xA;&lt;li&gt;为了方便理解将每次计算距离视为两点之间的连线,看片段上线的数目就知道这个片段的使用次数&lt;/li&gt;&#xA;&lt;li&gt;从$a[0]-a[1]$这一的角度来看:从$a[0]$连出去了$n-1$条线,每条线都经过了$a[1]$,所以得出$a[0]-a[1]$段的贡献是$n-1$&lt;/li&gt;&#xA;&lt;li&gt;从$a[1]-a[2]$的角度来看,$a[1]$连出去的$n-2$也就是$(n-i-1)$条线覆盖了$a[1]-a[2]$&#xA;&lt;ol&gt;&#xA;&lt;li&gt;但还不够,注意到$a[0]$发出去的线只有一条落在了$a[1]$上,剩下的线也覆盖了$a[2]$&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;希望确切地知道此时到底有多少条线覆盖了这段距离&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;证明&#34;&gt;证明&lt;/h3&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;设$f[i]$表示$a[i]$到$a[i+1]$这段距离对结果的贡献次数&lt;/li&gt;&#xA;&lt;li&gt;同时可知$f[i]$也表示此时距离上面的线段数量&lt;/li&gt;&#xA;&lt;li&gt;从a[i]发出的所有向右的线都会做贡献,这个次数为$n-i$&lt;/li&gt;&#xA;&lt;li&gt;发现$a[i]$之前的线段,也就是参与了$f[i-1]$计算的线段,有一部分落在了$a[i]$上,剩下的部分继续参与$f[i]$的计算&lt;/li&gt;&#xA;&lt;li&gt;可知落在$a[i]$上的线段实际上是a[i]发出的指向左边的线段,其数量为$i$&lt;/li&gt;&#xA;&lt;li&gt;综上&#xA;$f[0]=n-i\f[i]=(f[i-1]-i+n)-i=f[i-1]-2*i+n$&lt;/li&gt;&#xA;&lt;li&gt;$$\displaystyle res=\sum_{i=0}^{n-2}f[i]*(a[i+1]-a[i])$$&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h3 id=&#34;code&#34;&gt;Code&lt;/h3&gt;&#xA;&lt;p&gt;可以看出只与前一个状态有关,进行空间优化&#xA;代码为了方便对于$f[i]$计算的是$a[i+1]$到$a[i]$&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#66d9ef&#34;&gt;class&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;Solution&lt;/span&gt;:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#66d9ef&#34;&gt;def&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;sumDistance&lt;/span&gt;(self, nums: List[int], s: str, d: int) &lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt; int:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      mod&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1000000007&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      n&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;len(nums)&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; i,a &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; enumerate(s):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          nums[i]&lt;span style=&#34;color:#f92672&#34;&gt;+=&lt;/span&gt;d &lt;span style=&#34;color:#66d9ef&#34;&gt;if&lt;/span&gt; s[i]&lt;span style=&#34;color:#f92672&#34;&gt;==&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;R&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#66d9ef&#34;&gt;else&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;d  &#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      nums&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;sort()&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      pre&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      res&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;for&lt;/span&gt; i &lt;span style=&#34;color:#f92672&#34;&gt;in&lt;/span&gt; range(n&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;):&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          pre&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;(pre&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;n&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;i&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;)&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;mod&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          res&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;(res&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;(nums[i&lt;span style=&#34;color:#f92672&#34;&gt;+&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;]&lt;span style=&#34;color:#f92672&#34;&gt;-&lt;/span&gt;nums[i])&lt;span style=&#34;color:#f92672&#34;&gt;*&lt;/span&gt;pre)&lt;span style=&#34;color:#f92672&#34;&gt;%&lt;/span&gt;mod&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#66d9ef&#34;&gt;return&lt;/span&gt; res&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;前缀和的形式化证明&#34;&gt;前缀和的形式化证明&lt;/h1&gt;&#xA;&lt;p&gt;下面是&lt;a href=&#34;https://leetcode.cn/problems/movement-of-robots/solutions/2304680/nao-jin-ji-zhuan-wan-pai-xu-tong-ji-pyth-we55/&#34;&gt;灵神的证明方式&lt;/a&gt;,与上面的证明相比更加数学,如下&#xA;$ (a[i]−a[0])+(a[i]−a[1])+⋯+(a[i]−a[i−1])=i⋅a[i]−(a[0]+a[1]+⋯+a[i−1])\$ $(a[0]+a[1]+⋯+a[i−1])$可根据前缀和求&#xA;下面是灵神的代码&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
