美文网首页
算法题分类规划

算法题分类规划

作者: 一叶知_c4eb | 来源:发表于2020-05-24 10:37 被阅读0次

哈希表 or 切片操作 or stack

1. 两数之和 (attention break)

https://leetcode-cn.com/problems/two-sum/

需要理解把复杂问题简单化,也就是切片处理.

既然原数据集较大,我们可以分开处理,利用list特点,完美将i,j剥离开

或许还可以考虑使用双哈来空间换时间

2. 有效的括号(stack)(pop in judge line)

https://leetcode-cn.com/problems/valid-parentheses/

利用栈的性质

判断的时候要趁机pop

判断empty来决定结果

3. LRU(其实就一概念题)(get操作要记得更新)

https://leetcode-cn.com/problems/lru-cache/

双链表+哈希表

4. 栈实现队列 (基操)

https://leetcode-cn.com/problems/implement-queue-using-stacks/

5. 行星碰撞 (注意正负)

https://leetcode-cn.com/problems/asteroid-collision/

6. 困难计算器(流畅写下来就对栈挺清楚的了)(sign,num,res)

https://leetcode-cn.com/problems/basic-calculator/

公式 res += sign*num 出现了三次

要明白为什么要用栈存储上一组值

c.isdigit()判定数字

同时储存res.append([sign, res])

7. 字符串解码

https://leetcode-cn.com/problems/decode-string/

和困难计算器一模一样

8. 删除字符串中的所有相邻重复项

https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/

用栈啊兄弟!!!!!!!!

9. 砖墙

https://leetcode-cn.com/problems/brick-wall/

要利用好字典

没有一行新的砖重叠,那就加一

记住不能取最后一块砖哦

10. 颜色排序

https://leetcode-cn.com/problems/sort-colors/

深拷贝

妙用列表,有点类似于字典

滑动窗口为了你

1. 和为s的连续正数序列

https://leetcode-cn.com/problems/he-wei-sde-lian-xu-zheng-shu-xu-lie-lcof/

while的=,空间control

利用target//2来减少复杂度(二分就是那么好用)

i,j 哪个是终点值呢?

换个角度看世界之降低复杂度

1. 最长回文子串(中心扩展)

https://leetcode-cn.com/problems/longest-palindromic-substring/

封装好三个函数

helper函数负责判定以及更新

奇偶两次调用,每个中心不要忘掉.(2N-1)

厉害的双指针

1. 删除链表的倒数第N个节点

https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/

先选定指针之间的长度(快指针负责先到位)

长度遍历时一定要考虑到如果删除的是头节点怎么办,如果是头节点直接返还head.next就好了

选定之后两个指针齐头并进

最后通过double next跳跃即可

2. 反转链表 (双指针赛高,注意dump)

https://leetcode-cn.com/problems/reverse-linked-list/

非常基础,需要注意的就是将cur.next事先封存即可

3. 字符串相加 

两数之和与这道题一样,注意中间的int

4. 链表的中间节点(注意一下边界左右,cue.next and cue.next.next)

https://leetcode-cn.com/problems/middle-of-the-linked-list/

常规操作

需要考虑是左边界还是右边界

5. 两数相加

https://leetcode-cn.com/problems/add-two-numbers/

注意初始结点和操作结点

记住r.next

6. 字符串压缩 (字符串的问题优先考虑双指针)(注意str(i-j))

https://leetcode-cn.com/problems/compress-string-lcci/

可以注意仅仅赋值一个变量i即可,在一层循环中使用j=i赋值

利用i=j来更新慢指针位置

7. 字符串相乘 (倒着来,两个标志)

https://leetcode-cn.com/problems/multiply-strings/

8. 删除(跳过)链表的结点

https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/

和第一题道理一样,需要注意的是两个指针并排向前走,当面对VAL=TARGET的时候,后指针完成跳跃即可

链表题一定要判断头节点

9. 接雨水(要理解)

https://leetcode-cn.com/problems/trapping-rain-water/

10. 反转单词(纯手写)(双指针集大成者)

https://leetcode-cn.com/problems/reverse-words-in-a-string/

递归大法好

1. 合并K个排序链表(结合链表融合以及归并思想)

https://leetcode-cn.com/problems/merge-k-sorted-lists/

2. 链表排序(拆开再排,从底向上)

https://leetcode-cn.com/problems/sort-list/

复杂度太高?我们来二分

1. Pow(x, n) (注意奇偶)

https://leetcode-cn.com/problems/powx-n/

理解递归精髓

把大问题切分,想象触碰到叶子节点时的感觉

递归到一个值再进行处理

2. 排序数组查找次数(双二分)

https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/

双二分,左右边界,第一分完讨论情况

引出一个新问题,二分的右起点到底是从哪里开始的?

3. x的平方根 (x//2)

https://leetcode-cn.com/problems/sqrtx/

l is bigger than r, always

right place

while

4. 缺失的数字(左右边界很好诠释)

你真的能理解为什么要分左右边界吗?

问问自己

你能吗?

https://leetcode-cn.com/problems/que-shi-de-shu-zi-lcof/submissions/

DP(问题太难怎么办?想想怎么拆了他)

1. 最大子序和

 https://leetcode-cn.com/problems/maximum-subarray/

2. 编辑距离(好好想一想递归的精髓)

https://leetcode-cn.com/problems/edit-distance/

3. 股票家族

https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii/

4. LCS

https://leetcode-cn.com/problems/longest-common-subsequence/

5. 剪绳子(状态!状态!)

https://leetcode-cn.com/problems/jian-sheng-zi-lcof/

贪心

1. 分糖果

前后两次,以S[I]为中心

https://leetcode-cn.com/problems/candy/

2. 连续数组的最大子序和

https://leetcode-cn.com/problems/maximum-subarray/

每一步都要贪心呢

排序

1. 合并区间(排序之后慢慢来嘛)

https://leetcode-cn.com/problems/merge-intervals/

2. 数组中的第K大元素 (小顶堆安排)

https://leetcode-cn.com/problems/kth-largest-element-in-an-array/

离一铭哥家很远的二叉森林

1. 平衡二叉树(前面的已经比较完了,所以后面的要取max)

https://leetcode-cn.com/problems/balanced-binary-tree/

一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1

注意每次返回小子树的高度

利用这个作为判定条件,设置-1为FLAG

2. 二叉树的最大深度

https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

基础中的基础,碰触到叶子节点记住加一即可

3. 二叉树的直径

https://leetcode-cn.com/problems/diameter-of-binary-tree/

相当于是最大深度的变形,只需要保留一个最大结果。

4. 重建二叉树(都是递归,概念题,自己要读出来)

https://leetcode-cn.com/problems/zhong-jian-er-cha-shu-lcof/

三加一,一不加

5. 反转二叉树 (递归~)

https://leetcode-cn.com/problems/invert-binary-tree/

没什么好说的,用语法糖直接反转就好了

6. 验证二叉搜索树

https://leetcode-cn.com/problems/validate-binary-search-tree/

中序遍历的顺序加上set去重

7. 树的子结构

https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/

注意逻辑,从例子入手,解释给自己听。

递归就是程序自动化。注意B要从头比。

奇技淫巧

1. 只出现一次的数字(位运算)

https://leetcode-cn.com/problems/single-number/

2. 跳跃游戏(你到底能跳多远?)

https://leetcode-cn.com/problems/jump-game/

DFS

1. 小岛问题(经典就完事儿了)

https://leetcode-cn.com/problems/number-of-islands/

2. 矩阵中的路径(边界条件注意一下)

https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof/

3. 单词搜索

https://leetcode-cn.com/problems/word-search/

4. 机器人的运动范围

https://leetcode-cn.com/problems/ji-qi-ren-de-yun-dong-fan-wei-lcof/

相关文章

  • 算法题分类规划

    哈希表 or 切片操作 or stack 1. 两数之和 (attention break) https://le...

  • 动态规划 Dynamic Programming

    从运筹学和算法的角度综合介绍动态规划 算法分类总结动态规划与静态规划的关系浅析静态规划和动态规划动态规划解非线性规...

  • Best Time to Buy and Sell Stock

    tags: 算法, LeetCode, swift, 动态规划 这是最近在学算法中完成的第一个系列题,系列题...

  • 算法题分类总结

    迭代查找类型 1. 题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序...

  • HDU、ZOJ、POJ刷题(难易)顺序

    网上有大量的OJ题目分类,根据题目分类刷题有利于巩固某一特定的算法,但是如果纯粹的刷题,根据合适的难度进行盲刷会更...

  • 动态规划思想的思考

    对动态规划的思考 如何确定一类的算法问题可以用动态规划的方式,首先就是抓住算法题的最优结果,是否可以从前往后,从上...

  • 分类算法与数据挖掘

    ################分类算法与数据挖掘---也就是回归于分类算法--对应于Y的0/1算法 ####分类...

  • 刷题计划

    目标:算法题 有思路 能实现(code能力) 实现:300道 leetcode 计划 按类型分类 时间:3个月,...

  • leetcode--刷题策略

    数据据结构与算法: 按分类来刷leetcode的题,一开始刷的时候先找经典的题--即频率高的题目 然后一题多练,经...

  • AI产品经理修行—机器学习必知(下)

    六、机器学习算法及分类 AI产品经理通过了解每种算法的基本逻辑、最佳使用场景。有助于产品前期规划和初步评估,并且与...

网友评论

      本文标题:算法题分类规划

      本文链接:https://www.haomeiwen.com/subject/pddvyhtx.html