leetcode刷题分类及API

一、题目分类

加粗表示又做了一遍

1.数组

1)leetcode1 两数之和

2)leetcode11 盛最多的水的容器

3)leetcode15 三数之和

4)下一个排列

5)48. 旋转图像

6)49. 字母异位词分组

7)跳跃游戏

8)56. 合并区间

9)两数之和2 输入有序数组

10)多数元素

11)除自身以外数组的乘积  

12) 搜索二维矩阵

13)移动0

14)前K个高频元素

15)找到所有数组中消失的数字

16)和为K的子数组

17)最短无序连续子数组

18)任务调度器

19)每日温度

20)消失的数字

21)猿辅导2020校招3 16

22)面试题 旋转数组 这记不住技巧恐怕不能原地进行吧

23) 搜索二维矩阵

274) H指数 数组的话还是要考虑一下排序有没有用

275)有序的话考虑二分

从左下角或右上角开始搜索

2.链表

1)leetcode2 两数相加

2)合并两个有序链表

3)排序链表

4)相交链表

5) 反转链表

6)反转链表

3.字符串

1)leetcode3 无重复的最长子串

2)leetcode5 最长回文子串

3)leetcode10 正则表达式匹配

4)字符串解码

5)回文子串

4. 回溯

1)电话号码的字母组合

2)括号生成

3)  39. 组合总和

4)46. 全排列

5)N皇后问题

6)岛屿数量

6) 组合

7)子集

8) 单词搜索

9) 猿辅导20201 12题

带记忆的回溯,回溯的递归算法要带返回值,不然是有问题的

不带记忆的回溯,三个要素,终止条件(这里判断了,下面就不用判断了

5.双指针

5.1 快慢指针

1)删除链表得到倒数第N个节点

2)环形链表

3)环形链表2

5.2 滑动窗口

(可以看leetcode 3,其实就是i和j之间是符合题意的,但是因为j+1之后就不符合,所以开始移动i,直到i和j能符合条件,i和j都是不后退的。

1)最小覆盖子串

2)找到字符串中所有字母异位词

3中的那种代码写法是可以的;HashMap<Character, Integer> map = new HashMap<>() map1.get(c1)和map2.get(c2)进行相等比较时要用equals,因为是Integer,小于999时相等是可以的,大于了就不行了

3) 猿辅导2020校招3 18题

4)3. 无重复字符的最长子串

6.栈

1)有效的括号

2)猿辅导 20201 13

7. 二分查找

1)搜索旋转排序数组

2)  34. 在排序数组中查找元素的第一个和最后一个位置

8.动态规划

1)最大子序和

2)不同路径

3) 爬楼梯

4)买卖股票的最佳时机 1-6

5)单词拆分

6)乘积最大子数组

7)打家劫舍1-3

8) 最大正方形

9)完全平方数

10)最长上升子序列

11)零钱兑换 1 2 

(零钱兑换1不是背包问题,但确实是动态规划问题,思想和动态规划有点像, 2像是完全背包问题的变种)

12)分割等和子集

13)无重叠区间

14)目标和

15)最长回文子序列

16)最长公共子序列

17)完全背包问题和0-1背包问题D:\work\leetcode\src\zeroOnePackage

D:\work\leetcode\src\zeroOnePackage dp[i][j]表示有i件物品,j块钱(或容量),能获得的最大的收益。0-1背包和完全背包各有不同的递推公式。

9 排序(不止这两道题,其他有的也可以加过来)

1)颜色分类(荷兰国旗问题)

2)二分查找

10.树

1)二叉树的中序遍历

2)不同的二叉搜索树

3)验证二叉搜索树

4)对称二叉树

5)二叉树的层次遍历

6)二叉树的最大深度

7)从前序与中序遍历序列构造二叉树

8)二叉树的最大深度

9)从前序与中序遍历序列构造二叉树

10)二叉树的最小深度

11)二叉树展开为链表

12)二叉树的前序遍历

13)二叉树的后序遍历

14)反转二叉树

15)二叉树的最近公共祖先

16)路径总和3

17)把二叉树转换为累加树

18)二叉树的直径

19)合并二叉树

11.位运

1)只出现1次的数字

2)寻找重复数

3)比特位计数

4)汉明距离

12.数据结构

1)LRU缓存机制

2)最小栈

3)实现Trie树

13. BFS(广度优先遍历)

1)课程表

2)打开转盘锁

3)滑动谜题

14.贪心算法

1)根据身高重建队列

2)用最少数量的箭引爆气球

3)猿辅导20202 18题

二、API

1. String

s.subString(a,b) [a,b)      s.substring(i)就是到i到最后一个

s.charAt(int a);

s.equalsIgnoreCase(S)用忽略大小写的方法比较两个字符串是否相等,返回boolean型;

s.indexOf(String s), s,indexOf(char c)

s.toLowerCase();

s.toUpperCase();

s.lastIndexOf();

s.replace(char c, char d);s.replace(String s, String d) (注意这个不会改变原串,要记录返回值)

s.toCharArray()

2.ArrayList

add(T t)

new ArrayList<>(stack) 同是List子类可以这样构造

remove(int index);remove(Object o);

get(int index)

set(int index, T t)

contains(T t)

 indexOf(T t)

isEmpty()

3.LinkedList

offer(); poll() ; size()

4.Stack

pop(), peek(), push(),isEmpty()

5.HashMap

boolean containsKey(T t);

get() ;

put();

containsValue(Objeact value);

remove(key)

keySet()

values()

6.PriorityQueue

size(), poll(), offer()

7.Set HashSet

add(T t); contains(T t);remove(T t)

8.Colleations类

Collections.sort();

int binarySearch(List list, Object key)//对List进行二分查找,返回索引,注意List必须是有序的

int max(Collection coll)//根据元素的自然顺序,返回最大的元素。 类比int min(Collection coll)

int max(Collection coll, Comparator c)//根据定制排序,返回最大元素,排序规则由Comparatator类控制。类比int min(Collection coll, Comparator c)

void fill(List list, Object obj)//用指定的元素代替指定list中的所有元素。

int frequency(Collection c, Object o)//统计元素出现次数

int indexOfSubList(List list, List target)//统计target在list中第一次出现的索引,找不到则返回-1,类比int lastIndexOfSubList(List source, list target).

boolean replaceAll(List list, Object oldVal, Object newVal), 用新元素替换旧元素

9.Arrays类

Arrays.sort(candidates);

Arrays.fill(arr, T t);数组填充

Arrays.copyOf(res, j);j是从0开始copy的长度

        Arrays.sort(points, new Comparator<int[]>(){
            @Override
            public int compare(int[] o1, int[] o2){
                return o1[1] - o2[1];
            }
        });

10. StringBuffer

new StringBuffer(String s)

sb.reverse()

sb.append(char c);sb.append(String s)

sb.delete(int start, int end)

sb.insert(int offset, int i)

sb.replace(int start, int end, String str)

sb.toString()

capacity().capacity()

还有一些方法和Stirng相同

11.字符串和整型数字转换

字符串 --> 整型数字

int num = Integer.parseInt(sNum);

Stirng s = num+"";

12.字符和int转换

char-->int 比较好转

char c = '5';
int b = c - '0';

int -->char

int a=5;

char c = (char)(a+48);

13.char

字符串转字符数组 s.toCharArray()

字符数组转字符串 new String(arr)

美团2019秋招题目总结:

1.图的广度优先遍历

2.滑动窗口

3.反向0-1背包(动态规划)

4.后一个比前一个大说明覆盖不到,要在res[i-1]基础上多加nums[i]-nums[i-1]这么多天,否则不变(动态规划)

5.修改过的0-1背包(动态规划)

6.差分数组

7.模拟过程,注意读题

美团2016

1. 动态规划 股票第一题

2. 数组类题

3. 回溯

4. 单调栈

5.字符串

6. 其他

美团2016_2

1. 其他(哈夫曼树)

2. Iterator

3. 数组

4. 动态规划(股票)

美团2017

1. 由动态规划推导出了数学规律

2. 动态规划

3. 单调栈

4. 动态规划

美团2020 后台开发

5. 栈

6.递归回溯

7. 最优化 回溯?贪心?

8. 滑动窗口

9. 图?

美团2020 系统开发

9. 动态规划

10. 前缀树

字节跳动2019

1.字符串

2.其他

3. 回溯

4. 其他

5. 动态规划 旅行家问题

6. 动态规划

7. 其他

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值