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

顺序表vector--------练习题7题解

题目

解法

class Solution {
public:int findMiddleIndex(vector<int>& nums) {int l, r, mid = 0, suml = 0, sumr = 0;while (mid < nums.size()) {l = mid - 1;r = mid + 1;suml = 0, sumr = 0;while (l >= 0) {suml += nums[l];l--;}while (r < nums.size()) {sumr += nums[r];r++;}if (suml == sumr) {return mid;}mid++;}return -1;}
};

反思

1.考察知识点:顺序表vector,双指针

2.踩的坑:每次循环的总和numl,numr没有放在循环里面进行刷新;

3。可以优化的地方:现在这个解法的时间复杂度是O(n^2),空间复杂度是O(1).对时间进一步优化的话,可以采用前缀和+总和公式的方法:

class Solution {
public:int findMiddleIndex(vector<int>& nums) {int total = 0;// 1. 先算数组总和(仅遍历1次,O(n))for (int i=0;i<nums.size();i++) total += nums[i];int suml = 0;// 2. 遍历每个mid,用公式算右和(O(n))for (int mid = 0; mid < nums.size(); mid++) {// 右和 = 总和 - 左和 - 当前mid的值int sumr = total - suml - nums[mid];if (suml == sumr) return mid;// 左和累加当前元素,为下一个mid做准备suml += nums[mid];}return -1;}
};

从这个思路中我可以学习到,左和+mid+右和就等于总和,所以无需单独计算,只需要一个for循环来判断大小就好了。

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

相关文章:

  • 网站建设含义六盘水网络推广
  • 江北网站制作制作网页用什么语言
  • 校园视频网站建设房地产开发公司账务处理流程
  • 给网站做维护是什么工作关注公众号一单一结兼职app
  • 子午谷网站建设百度投诉中心24小时电话
  • 今日行情明日机会——20251107
  • 做网页怎么在网站播放视频网站设计岗位的职责与要求
  • 毕设网站淘宝指数查询工具
  • 如何使用Python高效转换Excel到HTML
  • 网站实施就是网站建设网站设计所需要的理念
  • MySQL 基础完全指南(视频教程)
  • Linux-第四章web服务
  • 银川建设网站公司经典重庆论坛上不了了
  • 中山建网站找哪家网上商城网站建设方案
  • 做产品网站建设百度官网app
  • 新商盟显示 检查网站开发错误呢中国招标信息公开网
  • SQL表设计与约束教程
  • xampp可以做网站吗网络安全管理平台
  • C语言--函数(function)
  • 做队徽的网站简单的个人网页制作html
  • pos机网站模板中国建设银行app官网
  • 学做效果图网站有哪些戴尔网站建设
  • 建设部网站怎么查询相关专业湖南省郴州市天气
  • 校园服装网站建设演示文稿永州微网站建设
  • 上犹网站建设企业网站怎么制作
  • 建材在哪些网站做介绍西安网页设计
  • 如何制作手机商城网站视频背景做网站背景
  • 做柜子设计的网站设计电脑公司网站设计
  • 网站推广策划方案范文中国工商银行官网
  • 青海市建设局网站打折网站模板