算法学习1

线性结构

1.数组:

内存地址连续存在

为什么数组索引从0开始?

N就是整个数组包含元素的个数,显得不等式更加优雅 

2.链表:内存不必相连

平常说的链表,一般情况下是单向链表

3.列表 

4.栈

先进后出的线性表,限定元素只能在栈顶进行插入和删除操作 

单调栈:其中的元素满足单调性(从上往下):单调递增(栈底大,栈顶小)、单调递减(栈顶大,栈底小)

5.队列

先进先出

双向队列

优先队列:可以通过O(1)复杂度,删除队列中的最值

6.哈希表

 

基本排列算法

1.插入排序

2.计数排序

 

3.冒泡排序

 

4.选择排序

 

 

 

简答题

1.数组/列表的索引为什么是从0开始的?

        这样能够给出更好的不等式,使元素的下标=该元素前面元素的个数 0<=N<10,就表示10个元素,10=10,更优雅,比1<=N<11好

2.数组和链表之间有什么异同点

        同: 都是线性结构

        异:数组元素所占内存连续,链表元素占内存不连续

3.数组和列表之间有什么异同

        列表被称为动态数组,可以随时增大列表的size,这点比数组方便

4.    数组和列表是否存在严格区别    

        是,pyThon

5.栈的特点?队列的特点

        栈:先进后出,栈尾操作;队列:先进先出,队头操作。双向队列两头都能操作

6.你能否用一个双向队列来实现一个栈?

        能,在双向队列队尾添加元素,在队尾删除元素

7.优先队列和队列的异同

        队列:先进先出

        优先队列:可以通过O(1)复杂度,删除队列中的最值

8.哈希表和数组之间的异同点

        同:都存在映射关系

        异:哈希表是从key映射到value,数组是从索引映射到元素

9.哈希表(map)和哈希集合(set)之间有什么异同点

        map存储key和value

        set存储key

10.给定一个数组[5,3,8,1,9,6,7,8,2],描述用这个数组构建一个单调递减栈(从栈顶到栈底单调递减)的过程

        5进入栈,3<5, 5出栈,3进栈,8>3,8进栈,1<8,1<3,3、8出栈,1进栈,9>1,9进栈,6<9,9出栈,6进栈,7>6,7进栈,8>7,8进栈,2<8,2<7,2<6,2>1,所以 6,7,8出栈 2进栈

最终栈中的数字为2,1

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值