当前位置: 首页 > news >正文

分割数组得到最小绝对差

3698. 分割数组得到最小绝对差 - 力扣(LeetCode)

Solution

一次遍历,记录以每个元素结尾的最长递增子数组的长度以及最长递减子数组的长度,同时记录前缀和数组。

有了上一次遍历得到的结果之后,再遍历一次,枚举分割位置,这样就可以很轻松的判断是否满足递增和递减的条件,并且根据前缀和可以很容易的求和。

class Solution {
public:const long long inf = 1e11;long long splitArray(vector<int>& nums) {int n = nums.size();if (n == 2)return abs(nums[0] - nums[1]);vector<int> f1(n, 1); // 递增vector<int> f2(n, 1); // 递减vector<long long> sum_up(n + 1, 0);sum_up[0] = 0;for (int i = 1; i < n; ++i) {if (nums[i] > nums[i - 1])f1[i] = f1[i - 1] + 1;if (nums[i] < nums[i - 1])f2[i] = f2[i - 1] + 1;}for (int i = 1; i <= n; ++i) {sum_up[i] = nums[i - 1] + sum_up[i - 1];}long long ans = inf;for (int i = 0; i < n - 1; ++i) {// i=0,n=3,f1[0]==1&&f2[2]>=3-0-1if (f1[i] == i + 1 && f2[n - 1] >= n - i - 1) {long long s1 = sum_up[i + 1];long long s2 = sum_up[n] - sum_up[i + 1];// cout<<s1<<" "<<s2<<endl;ans = min(ans, abs(s1 - s2));}}if (ans != inf)return ans;elsereturn -1;}
};

http://www.dtcms.com/a/420178.html

相关文章:

  • openGauss数据库自动安装脚本
  • GSM8K:评估大模型数学推理能力的关键数据集
  • 网站建立公司百度站长平台h5网站
  • P1989 三元环计数
  • asp 公司网站建设网站培训班
  • 郴州网站制作公司电话网站下拉广告
  • 营销型网站建设的概念WordPress网站封装app教程
  • 天津建设厅网站导航网站怎么赚钱
  • 做带支付功能的网站网站和软件建站
  • 广西桂林建设局网站手游排行榜
  • 【QT第二章】信号与槽
  • 网站建设站点做网站通过什么赚钱
  • 济宁网站建设是什么意思wordpress头像上传插件
  • 做影视网站什么cms好用吗网站配置域名这样做
  • 【Spring】Spring Boot 自动配置
  • 青浦网站优化前程无忧做网站多少钱
  • 常熟港口建设费申报网站怎么网站建设
  • 文件的读写 二进制形式打开文件
  • 吴忠住房和城乡建设网站成都官网seo技术
  • 惠州建网站服务天津专业网站制作流程优势
  • 北京联通网站备案php 网站模板
  • 清河做网站哪里好齐河网站建设
  • CodeBuddy CLI工具深度测评:从零到一实现鸿蒙游戏开发实践
  • 网站前后台模板服务专业的网站建设服务
  • 资讯网站策划怎么写龙岗公司网站
  • fr后缀网站在线做logo
  • 茶楼 网站免费网站建设域名
  • NeRF+3DGS——提升渲染质量与压缩模型参数
  • Appcelerator打包ipa有哪些优势
  • 五华建设银行网站宁波seo网络推广优化价格