数据结构算法笔记

一、回溯

# 关键代码
i = i - j + 1;

# i 为主串元素下标, j 为匹配串下标
# 回溯导致算法效率低下

二、贪心

总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解

贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

例:1元,5元,10元

要求:14元最少几张钞票?(一张十元,四张1元);抽最大的数。

特点,金额都是倍数关系

如果不是倍数就不能选最大的了,如:存在7元的金额钞票

三、时间复杂度

(1)log n 的时间复杂度怎么推导来的?

答:根据对数法则:如果一个算法用常数时间(O(1)将问题的大小削减为其一部分(通常是1/2),那么该算法就是 O(log N)

代码举例:

count = 1
while (count < n) {
    count *= 2;
}

// 总共执行多少次,就是求乘以多少个2,退出循环。
// 2x = n    -->     x = log2n  (2的x次幂等于n 推导出 x = 以2为底的log n)

四、堆排序

堆排序的堆是一种近似二叉树的结构,但却不是二叉树。是vector类型的线性链表。

待更新。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值