• 判断
    • 奇偶数
    • 整数小数
    • 数据类型
    • 小数比较

比较大小小数 比较大小 为什么 不对

  • 溢出

判断数值溢出

  • 字符类型
  • 整除
  • 闰年平年

    数学

  • http://c.biancheng.net/cpp/u/yuanma/ | 数学
    - 随机数
    - 绝对值
    - 数的合并分解 求第几位
    - 级数 阶乘
    - 素数
    - 回文数
    - 水仙花数
    - 奇数偶数
    - 数制转化
    - 最大公约数最小公倍数
    - 质因数
    - 求极值(最大值最小值)
    - 鞍点
    - 计算分段函数 解方程
    - 斐波那契数列
    - 百元百鸡
    |
    - 象棋棋盘
    - ASCII
    - 杨辉三角
    - 九九乘法表
    - 日历
    - 日期时间
    - 大小写变换
    - 3的幂
    - 质数
    | 求文字或字母出现次数
    倒序
    人机猜数字 | | —- | —- | —- |

字符串


- 最长不重复子串

- atoi

- 反转

- 唯一字符

- 回文字符串
- 字符串相加

- 比较

kmp |

位运算

|
- 整形二进制颠倒
https://leetcode-cn.com/problems/reverse-bits/ |
- 汉明距离
|
- 汉明重量
| | —- | —- | —- |

链表


- 链表反转
- 环形链表
- 链表中间节点

- 删除链表

- 有序链表合并

- 去重

- 2020年4月12日 21点17分
- 链表的很多问题都是由双指针来解决的,比如 找到第几个节点 找到中间节点

数组

|
- 旋转
| 全排列
- 思想
参考
- https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/
| 矩阵旋转90度
参考
https://blog.csdn.net/qq_26525215/article/details/52076488 | | —- | —- | —- | |
- 排序
|
- 数组交集
|
- 水最多的容器
| |
- 右侧小于个数
|
- 移除元素
|
- 插入位置
- 二分
| |
- 股票买卖时机
| | |

抽象数据类型

| 队列二叉树层级遍历
整体思路
- 使用队列
局部改进二叉树层级遍历锯齿
整体思路
- 双端队列
局部改进


| 栈
- 括号匹配
整体思路
- 计数器方法
- 栈
局部优化改进
- 开头判断奇数偶
- 栈长度和字符串长度 比较判断
- 使用ASII码 判断 匹配
https://leetcode-cn.com/problems/valid-parentheses/
- 栈实现队列
- 队列实现栈

| TOPKhttps://blog.csdn.net/qq_41880190/article/details/89404706
https://blog.csdn.net/iteapoy/article/details/79822343
https://www.sohu.com/a/255145095_178889 | | —- | —- | —- |

哈希表


- 两数之和

栈和队列


- 括号匹配


- 二叉树遍历

- 比较相等
- 对称
- 最大最小深度
- https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

- 路径和

- 平衡二叉树

动态规划


- 子序列和数目

- 爬楼梯

- 最长有效括号

真题

问题查找

顺序
插值查找
斐波那契查找树表查找分块查找哈希查找
二分
https://www.cnblogs.com/maybe2030/p/4715035.html
https://blog.csdn.net/weixin_39241397/article/details/79344179

排序

算法分类

  • 比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
  • 非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。

问题 - 图1

算法分析

问题 - 图2

  • 冒泡时间复杂度原因

https://blog.csdn.net/qq_41891257/article/details/85245127

  • 相同稳定性

相邻的交换就是稳定的

比较-交换-冒泡Bubble

  • 思想

    在要排序的一组数中,对当前还无序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。

  • 分析

稳定

比较-交换-快速Quick

  • 思想

    1.选择一个基准元素,通常选择第一个元素或者最后一个元素, 2.通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。 3.此时基准元素在其排好序后的正确位置 4.然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。

  • 问题

如何分割:双指针方法,具体不止一种
https://blog.csdn.net/nrsc272420199/article/details/82587933
https://blog.csdn.net/shujuelin/article/details/82423852

  1. public int getMid(int[] arrays,int low,int high) {
  2. int base = arrays[low];//基准元素
  3. while (low < high){
  4. while (low < high && arrays[high] >= base){//尾部大于基准,往前挪动
  5. high--;
  6. }
  7. arrays[low] = arrays[high];
  8. while (low < high && arrays[low] <= base){//首部小于基准,往后挪动
  9. low++;
  10. }
  11. arrays[high] = arrays[low];
  12. }
  13. arrays[low] = base;//中间赋值基准元素
  14. return low;
  15. }
  16. public void quick(int[] arrays,int low,int high) {
  17. if (low < high) {
  18. int mid = getMid(arrays,low,high);
  19. quick(arrays,low,mid -1);
  20. quick(arrays,mid+1,high);
  21. }
  22. }
  23. public int[] quick(int[] arrays) {
  24. quick(arrays,0,arrays.length-1);
  25. return arrays;
  26. }

比较-选择-直接选择

  • 思想

    选择无序区间的最小值(或最大值)和无序区间的第一个交换

  • 相同稳定性

具体问题具体分析
https://blog.csdn.net/houyanjun/article/details/2446074

比较-选择-堆

  • 思想

    根据数组无序区间创建堆,将最大项放到后面成为序区间,重复上述步骤

  • 问题

如何创建堆:从第一个非叶子结点从下至上,从右至左调整结构

  • 分析

时间复杂度稳定 而且快
空间复杂度 低
相同稳定性 不稳定
代码复杂度高

  • 参考

https://blog.csdn.net/qq_36186690/article/details/82505569

比较-插入-直接插入

  • 思想

    当前元素插入到有序区间合适位置

  • 分析

比较-插入-希尔

  • 思想

    第一个突破O(n)的排序算法,是简单插入排序的改进版 分组的直接插入

比较-归并-二路归并

  • 思想

    归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。

  • 问题

合并: 创建新数组暂存,需要额外的空间,选择小的形成新的数组

  • 参考

https://blog.csdn.net/hd12370/article/details/81036680

如何选择算法

根据具体数据特点来选择,算法不止有时间复杂度和空间复杂度
稳定性,交换次数 等等 特性 都要考虑进去
依然是建议大家不要对算法带有个人色彩,在面试回答问题的时候和看待一个人和事物的时候,可以参考的回答模式是「具体问题具体分析,在什么什么情况下,用什么什么算法」。

参考

题目

蓝桥杯选拔

  1. 顺时针排序 数数 相等拿走 求最大数字
  2. 已知两个包装数量 求最大不能组合的数字
  3. 13
  4. 1113
  5. 3113
  6. 132113
  7. 下一个字符串 是对上一个字符串的描述
  8. 已知一个字符串
  9. 求几次操作 相邻字母不相同
  10. 已知一排字母 和26字母新顺序
  11. 求字母按照新顺序排序结果
  12. 已知n人 k分以内才可以匹配对局
  13. 求可以组成几局
  14. 已知整数N
  15. 求别的进制
  16. 已知字符串
  17. 求操作几次 可以变成回文

    参考

    你看过/写过哪些有意思的代码?

第八届蓝桥杯省赛 C_C++大学B组试题.docx

百度校园招聘历年经典面试题汇总:Android岗.docx
2018名企校招笔试真题精选-产品&运营篇.pdf
2018名企校招笔试真题精选技术篇.pdfACM算法模板(吉林大学).pdfCCF真题及答案.pdf阿里巴巴2017秋招前端笔试题.pdf阿里巴巴校园招聘历年经典面试题汇总:算法工程师.docx阿里校园招聘历年经典面试题汇总:前端岗.docx百度校园招聘历年经典面试题汇总:Java开发.docx百度校园招聘历年经典面试题汇总:测试开发.docx杭州电子科技大学期末考试真题:操作系统.docx华为校园招聘历年经典面试题汇总:Java开发.docx计算机基础提高资料:数据库篇2.pdf今日头条2017前端工程师实习生笔试题.pdf今日头条校园招聘历年经典面试题汇总:C++研发.docx京东校园招聘历年经典面试题汇总:Java开发.docx美团校园招聘历年经典面试题汇总:Android岗.docx清华大学期末考试真题:C++篇.docx腾讯校园招聘历年经典面试题汇总:C++研发.docx腾讯校园招聘历年经典面试题汇总:前端岗.docx网易校园招聘历年经典面试题汇总:C++研发(1).docx网易校园招聘历年经典面试题汇总:C++研发.docx校园招聘历年经典面试题汇总:产品岗.docxIT互联网名企经典面试题汇总:算法 数据结构篇.docx百度校园招聘历年经典面试题汇总:Android岗.docx

博瑞思笔试题(已完成).docx博瑞思试卷1(已经格式化).docx笔试题目-国泰新点-开发(已经格式化).docx
国泰新点实施.docx国泰新人考试.docx
科蓝笔试题.docx中软笔试题.docx紫金融畅java笔试(试卷).docx

测试工程师试卷.docx测试工程师.zip
新大陆数据库工程师试卷.docx数据工程师.zip
新大陆技术支持笔试题(已经格式化).docx技术支持.zip
新大陆java开发(已经完成).docx新大陆java开发答案.docxjava开发.zip
苏福特笔试题.docx

请先阅读题目.txt
题目1.zip
笔试题目二.docx

校招试题-软件公司开发(试题 已格式化).docx

剑指Offer 名企面试官精讲典型编程题(纪念版)-何海涛.pdf剑指OFFER 名企面试官精讲典型编程题 第2版.pdf

https://zhuanlan.zhihu.com/p/58946289?utm_source=wechat_timeline&utm_medium=social&s_s_i=n7tuZxj6RO5LCmRzYjgVc7SG5rsxHzvTn6F%2FuvzdmRw%3D&s_r=1&from=timeline

阿里实习内推面试(被拒)
2019 届阿里实习生内推实况是怎样的?

https://mp.weixin.qq.com/s/rYK7yvtugeeP2WKnW77YzA