leetcode 7天刷算法题

第二天:leetcode 一个视频教会你必考的8种数据结构(视频

2022-09-17  本文已影响0人  鹏城十八少

关于作者:

大家好,我是Leetcode 2020--2022,连续3年金牌获得者,和亚洲区域赛铜牌获得者,

先后在字节和大疆从事技术研发,现在是阿里达摩院的扫地僧,面试专家,CSDN博客专家。

对算法一定的见解,是一个刷题10年的算法爱好者 ,利用工作之余刷leetcode。成为leetcode官方答案贡献者之一。

1.数组:读多写少     标签:连续

2.链表:写多读少     标签:插入,删除,反转       指针指向下一个元素 (dumpNode,preNode,NextNode)

3.栈:先进后出         标签:更大,对称(LinkList) 边遍历边删除

4.队列:先进先出

5.哈希表:键值队 ,哈希碰撞,     标签: 次数,重复

6.哈希set集合:独一无二 标签:去重

7.树    

8.堆:最大堆和最小堆        标签:第k个

9.图:了解

总结: 常考的就4种:数组,链表,字符,二叉树

访问:Access

搜索:Search

插入:Insert

删除:Delete

总结: 需要掌握增删改查的时间复杂度

第一数组

特点:连续,相同类型的数据

数组的特点:插入和删除效率低!   读多写少

数据2个性

1.元素:也就是值

2.索引

增 :O(N)           插入:需要移动

删:O(N)            需要移动

改:O(N)   

访问;查:O(1)   通过索引找

搜索:O(N)          找到值

1.创建数组

int[] arr1= new int[3];

int[] arr = new int[]{1,2,3, …};

2.修改元素

arr[i]=value

3.添加元素

一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度。

通过数组转集合

4.删除元素

和添加一样,必须通过一个新数组来实现的

5.查找某个元素

通过遍历。然后判断是否相等

6.排序

Arrays.sort(people);

7.二维数组的基本API

56题和200题

代码举例:

---------------------------------------------

1.0485题 :最大连续1的个数   太简单了

2.0283题:  移动0太简单了

3. 0027题: 移除元素               简单(最重要的,双指针)

----------------------------------

0035.搜索插入位置

0027.移除元素

0026.删除排序数组中的重复项

0209.长度最小的子数组

0059.螺旋矩阵II

第二:链表

单链表:非顺序存储,顺序访问,不需要内存连续。

靠NEXT指针。找到下一个元素

因为不连续

访问:O(N)     通过key,得到值

搜索 :O(N)    找value值

插入O(1):     注意如果是插入某个索引的位置是O(N)

删除O(1)

特点:写多读少

因为插入的时间复杂度是O1

1).创建链表

2).添加元素

3).访问元素

4).查找元素

5).删除元素

6).俩表的长度

203: 移除链表元素

206:反转链表 (重要)

2:两数相加

21:合并两个有序链表

平时用到的链表结构:LinkList和LinkHashMap()

LinkList的基本操作:增删改查

主要的解决方案:

1.dummo:添加头节点。 因为会移动链表。所以要有一个保存最开始的

2.pr-->node

3.next-->node  

如何移动指针

特点:没有指向前面的指针,所以需要定义一个pre

最后返回dummy .next()。就是链表

第三:字符串

String 方式计算加法。

算法题:反向输出字符串

算法:翻转字符串成work am I

字符串中最长不重复子串

算法题:字符串移除多余空格,且技术单词首字符大写。

算法  两个字符串 比较最大的公共字符串 ,主要是思路 (面对问题,以大化小)

最后一道算法: 剑指 Offer 38. 字符串的排列 - 力扣(LeetCode) (leetcode-cn.com)

第一个只出现一次的字符

String 转 int。

重点: 字符的操作规则

1.字符类型  Character

字符串遍历后字符的操作

第一种:

char c;

String str=String.valueof(c);

第二种:

Stack stackChar = new Stack<>();

s.toCharArray(); //把String 转成char数组

3 .字符遍历: s.charAt

2.字符转ASCALL

3.ASCALL如何转字符

第四:二叉数

父子关系

1.节点

2.根节点         所以节点的父亲.最开始那个

3.叶子节点      没有孩子

高度: 从下往上      0,1,2

深度: 从上往下      2,1,0

层:     从下往上     1, 2,3

二叉树:  每个节点最多2个孩子

完全二叉树:

满二叉树:  

2者的关系:

完全二叉树是满二叉树数么?

满二叉树是完全二叉树么?

指的是根节点的位置

前序遍历:根节点----》左子树-----》右子树

中序遍历:左子树-----》根节点-----》右子树

后序遍历:左子树-----》右子树------>根节点

这几个没有做,后面学习解体方法的使用用到

144 : 前序遍历

94 :   中序遍历

145:  后序遍历

上一篇 下一篇

猜你喜欢

热点阅读