[学习笔记-C++篇]数组和字符串

优化算法:中心下标查找与有序数列搜索插入
本文介绍了中心下标查找算法的三个版本优化过程,从v1.0的基础实现到v3.0的时间复杂度大幅降低。同时,还探讨了有序数列搜索插入位置的两种实现,分析了它们的逻辑改进和效率提升。通过对算法的不断优化,实现了更快的执行速度和更少的内存消耗。
  1. 中心下标查找程序。

v1.0版本

该版本最基础,分别计算第i个下标左、右的元素和进行比较。思路简单,但是遍历下标需要重复计算,运算时间太长。

class Solution {
   
   
public:
    int pivotIndex(vector<int>& nums) 
    {
   
   
        int midnum=-1;
        for (int i=0;i<nums.size();i++)
        {
   
   
            int sum_left=0;
            int sum_right=0;
            for (int j=0;j<i;j++)
            {
   
   
                sum_left=nums[j]+sum_left;
            }
            for (int k=i+1;k<nums.size();k++)
            {
   
   
                sum_right=nums[k]+sum_right;
            }
            if (sum_left==sum_right)
            {
   
   
                midnum=i;
                break;
            }
        }
        return midnum;
    }
};

v2.0版本

该版本改进了一点点,首先计算一个所有元素之和,每次遍历左边元素之和,右边元素和直接作差得到。时间上好了一点,但还是很长,算法还是太麻烦。想想每次遍历求和是最费时间的,如果可以简化这个步骤会快很多。
执行用时:716 ms。内存消耗:30.2 MB。

class Solution {
   
   
public:
    int pivotIndex(vector<int>& nums) 
    {
   
   
        int sum_all=0;//数组元素和
        for (int p=0;p<nums.size();p++
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值