今天白天忙于春招和学校生产实习报告的抄写,只大概学习了算法的思路,代码的实现细节放在明天补上。
6. 区间和
卡玛网例题:区间和
输入一个数组,不断输入区间然后对区间元素求和
-
暴力解法:直接对每次的区间元素累加求和,当查询量大时,将会超时
时间复杂度:O( n ∗ m n * m n∗m) m 为查询次数 m为查询次数 m为查询次数 -
前缀和思想:在逐个输入数组元素的时候,同时记录前 k ( k < = n ) k(k<=n) k(k<=n)个元素的和。求区间和时就不用再每次for循环累加求和。
时间复杂度:O( n n n) 只需在输入数据的时候遍历一次完整的数组。
7. 开发商购买土地
卡玛网例题:开放商购买土地
输入一个二维数组,用一条线分割数组,使两侧差值最小。
-
暴力解法:三层循环,其中两层遍历所有的划分方法,最内层求和。
时间复杂度:O( n ⋅ n ⋅ n n · n · n n⋅n⋅n) -
前缀和思想:两个两层循环,分别记录前 k ( k < = n > ) k(k<=n>) k(k<=n>)行/列元素的和,再来两个个独立的一层循环,求出行/列所有的差值,取最小者。
时间复杂度:O( n ⋅ n + 2 ⋅ n n·n + 2·n n⋅n+2⋅n) 只需在输入数据的时候遍历一次完整的数组。