b_2. 算法之分类整理

排序查找算法

  • ST01_冒泡排序
  • ST02_选择排序
  • ST03_插入排序
  • ST04_快速排序
  • ST05_堆排序

查找算法

  • SC01_二分折半查找

生成消费者

  • TH_01_1_基于synchronized与wait/notify的生产消费者模式
  • TH_01_2_基于ReentractLock和Condition的生产消费者模式
  • TH_01_3_基于Semaphore(信号量)的生产消费者模式
  • TH_02_AB两个线程交替打印0-100的数字
  • TH_03_1多线程指定顺序执行join
  • TH_03_2多线程指定顺序执行synchronized
  • TH_03_3_多线程指定顺序执行ReentrantLock.
  • TH_03_4_多线程指定顺序执行Semaphore
  • TH_04_写一个死锁程序

A1_单例模式

  • JZ0_1_单例模式-双重加锁
  • JZ0_2_单例模式-静态内部类
  • JZ0_3_单例模式-kotlin by lazy()

A2_数

  • JZ10_1_斐波那契数列
  • JZ10_2_青蛙跳台阶
  • JZ10_3_青蛙跳台阶
  • JZ10_4_小矩形覆盖大矩形
  • JZ13_机器人运动范围
  • JZ14_剪绳子
  • JZ15_1_二进制中1的个数
  • JZ15_2_是不是2的整数次方
  • JZ15_3_m的二进制改变多少位得到n
  • JZ16_数值的整数次方
  • JZ43_1至n个整数1出现的次数
  • JZ44_数字序列中某一位的数字
  • JZ49_丑数
  • JZ60_n个骰子和为s的概率
  • JZ62_圆圈剩下最后一个数字
  • JZ64_求1加到n的和
  • JZ65_不用加减乘除做加法
  • OT_TopK问题
  • OT_二进制加法
  • OT_前n个数字二进制中1的个数
  • OT_大数相加
  • OT_整数除法

A3_数组

  • JZ03_1_整型数组中重复的元素
  • JZ03_2_整型数组中重复的元素
  • JZ04_二维数组找某数
  • JZ05_1_替换空格
  • JZ05_2_合并两个排序数组
  • JZ11_旋转数组的最小数字
  • JZ12_矩阵是否包含某字符路径
  • JZ21_调整数组顺序使奇数位于偶数前面
  • JZ29_顺时针打印二维数组
  • JZ39_数组中出现次数超过一半的数字
  • JZ40_找出数组中最小的k个数
  • JZ41_数据流的中位数
  • JZ42_连续子数组的最大和
  • JZ45_把数组排列成最小的数
  • JZ47_礼物的最大价值
  • JZ51_数组中的逆序对
  • JZ53_1_在排序数组中查找数字
  • JZ53_2_0到n减1中缺失的数字
  • JZ53_3_递增数组查找下标相等的数
  • JZ56_1_数组数字出现的次数
  • JZ56_2_数组数字出现的次数
  • JZ57_1_和为s的数字
  • JZ57_2_和为s的连续正数序列
  • JZ61_扑克牌的顺子
  • JZ63_股票最大的利益
  • JZ66_构建乘积数组
  • OT_字符串数组去重
  • OT_最大正方形

A4_字符串

  • JZ17_打印1到最大的n为数
  • JZ19_正则表达式匹配
  • JZ20_表示数值的字符串
  • JZ38_1_字符串的排列
  • JZ38_2_正方体三组向对面
  • JZ38_3_八皇后
  • JZ46_把数字翻译成字符串
  • JZ48_最长不含重复字符的子字符串
  • JZ50_第一个只出现一次的字符
  • JZ58_1_翻转单词顺序
  • JZ58_2_左旋转字符
  • JZ67_把字符串转换成整数
  • OT_字符串去重
  • OT_字符串的交集

A5_栈和队列

  • JZ09_1_用两个栈实现队列
  • JZ09_2_用两个队列实现栈
  • JZ30_包含min函数的栈
  • JZ31_1_栈的压入弹出序列
  • JZ31_2_是否是回文数
  • JZ59_1_滑动窗口的最大值
  • JZ59_2_队列的最大值

A6_链表

  • JZ06_从尾到头打印链表
  • JZ18_1_删除链表节点
  • JZ18_2_删除链表节点
  • JZ18_3_删除链表重复节点
  • JZ18_4_删除链表重复节点
  • JZ22_1_链表倒数第K个节点
  • JZ22_2_链表的中间节点
  • JZ23_链表中环的入口节点
  • JZ24_1_反转链表
  • JZ24_2_反转链表m至n节点
  • JZ24_3_旋转链表
  • JZ25_合并两排序链表
  • JZ35_复杂链表的复制
  • JZ52_两链表第一个公共节点
  • OT_k个一组翻转链表
  • OT_合并K个升序链表
  • OT_排序链表
  • OT_链表表示的两数相加

A7_二叉树

  • JZ07_1_二叉树前中后层序遍历
  • JZ07_2_重建二叉树
  • JZ08_二叉树的下一个节点
  • JZ26_树的子结构
  • JZ27_二叉树的镜像
  • JZ28_对称的二叉树
  • JZ32_1_不分行从上到下打印二叉树
  • JZ32_2_分行从上到下打印二叉树
  • JZ32_3_之字形打印二叉树
  • JZ32_4_二叉树第k层的第一个或最后一个节点
  • JZ33_数组是否是某二叉搜索树的后续遍历序列
  • JZ34_二叉树和为某一值的路径
  • JZ36_二叉搜索树转换为双向链表
  • JZ37_1_序列化和反序列化二叉树
  • JZ37_2_序列化和反序列化二叉树
  • JZ54_二叉搜索树的第k大节点
  • JZ55_1_二叉树的最大深度
  • JZ55_2_是不是平衡二叉树
  • JZ68_1_二叉搜索树的最近公共祖先
  • JZ68_2_二叉树的最近公共祖先
  • JZ68_3_带父亲指针的二叉树的最近公共祖先
  • JZ68_4_多叉树的最近公共祖先
  • OT_二叉树的宽度
  • OT_二叉树的最大宽度
  • OT_前序数组重建二分搜索树
  • OT_后序数组重建二分搜索树

扩展

(1)64匹马,8个赛道,找出跑得最快的4匹马?
  • 10次或者11次
(2)用天平在16个球中找出最重的球需要几次
  • 3次,(1)先分成2组,每组8个,放天平上,重的那个在哪边很容易看出来。(2)再在轻的那8个中取出1个,放到重的这边,凑成9个球,然后把这个9个球分成3组,任意选两组放到天平上:①如果一样重,则重的那个球在另一组没过秤的那3个球里。②如果不一样重,则重的那个球就在重的那一组里。(3)挑出这一组,重复第二步骤可找到那个重一点的小球。
(3)三门问题?
  • 换2/3的概率拿到奖品,不换1/3的概率拿到奖品。

你可能感兴趣的:(b_2. 算法之分类整理)