小红有一个长度为 的数组 ,定义数组权值为数组中相邻元素差的绝对值之和。现在小红有 个数 ,小红想把这些数插入到数组中,使得插入后的数组权值最小。请帮助小红计算最小的数组权值。
区块链毕设网qklbishe.com为您提供问题的解答
小红有一个长度为 的数组 ,定义数组权值为数组中相邻元素差的绝对值之和。现在小红有 个数 ,小红想把这些数插入到数组中,使得插入后的数组权值最小。请帮助小红计算最小的数组权值。
在[1,m]中的所有数,只需要考虑1和m的插入位置,其他数对结果不会产生影响。
#include <algorithm> #include <vector> class Solution { public: long long min_value(vector<int>& nums, int m) { int n = nums.size(); using ll = long long; ll d = 0; for (int i = 1; i < n; i++) { d += abs(nums[i] - nums[i-1]); } ll delta1 = min(abs(nums[0] - m), abs(m - nums.back())); ll delta2 = min(abs(nums[0] - 1), abs(1 - nums.back())); for (int i = 1; i < n; i++) { ll c1 = abs(nums[i] - nums[i-1]); ll c2 = abs(m - nums[i-1]) + abs(nums[i] - m); delta1 = min(delta1, c2 - c1); } for (int i = 1; i < n; i++) { ll c1 = abs(nums[i] - nums[i-1]); ll c2 = abs(1 - nums[i-1]) + abs(nums[i] - 1); delta2 = min(delta2, c2 - c1); } return d + delta1 + delta2; } };
编辑于 今天 12:33:19
以上就是关于问题小红有一个长度为 的数组 ,定义数组权值为数组中相邻元素差的绝对值之和。现在小红有 个数 ,小红想把这些数插入到数组中,使得插入后的数组权值最小。请帮助小红计算最小的数组权值。的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训