• 数据结构与算法分析


    • 第一章 引论

      • 一些数学公式以及证明方法
    • 第二章 算法分析

      • 了解O,Ω,Θ与o在计算相对增长率上的含义

      • 分析程序运行时间的一般法则(一般用O表示):

      • 例子:求最大子序列和。采用分治的思想可以将程序运行时间降至O(NlogN);采用动态规划的思想可以将时间降至O(N)

        # 分治思想
        class Solution {
        public:
            struct Status{
                int lSum,rSum,mSum,iSum;
            };
        
            Status pushUp(Status lSub, Status rSub)
            {
                int iSum = lSub.iSum + rSub.iSum;
                int lSum = max(lSub.lSum, lSub.iSum + rSub.lSum);
                int rSum = max(rSub.rSum, rSub.iSum + lSub.rSum);
                int mSum = max(max(lSub.mSum, rSub.mSum), lSub.rSum + rSub.lSum);
                return (Status) {lSum, rSum, mSum, iSum};
            }
        
            Status get(vector<int>& a, int l, int r)
            {
                if(l == r)
                    return (Status) {a[l], a[l], a[l], a[l]};
                    
                int m = (l + r) >> 1;
                Status lSub = get(a, l, m);
                Status rSub = get(a, m + 1, r);
                return pushUp(lSub, rSub);
            }
        
            int maxSubArray(vector<int>& nums) {        
                return get(nums, 0, nums.size() - 1).mSum;
            }
            
        };
        
        # 动态规划
        class Solution {
        public:
            int maxSubArray(vector<int>& nums) {
                int pre = 0, maxAns = nums[0];
                for (const auto &x: nums) {
                    pre = max(pre + x, x);
                    maxAns = max(maxAns, pre);
                }
                return maxAns;
            }
        };
        
      • 例子:对分查找、欧几里得算法求最大公因数、幂运算

    • 第三章 表、栈、队列

  • 相关阅读:
    浏览器控制台获取百度文库文章内容
    使用python登录CNZZ访问量统计网站,然后获取相应的数据
    使用Python登录腾讯MTA数据分析平台,然后获取相关数据
    使用python读写excel
    python将json转csv
    TCP/IP协议
    PHP smarty
    PHP入门及面向对象
    PHP概览
    PHP整体概览
  • 原文地址:https://www.cnblogs.com/sunshine-free/p/14663570.html
Copyright © 2020-2023  润新知