算法
打开转盘锁
· ☕ 3 min read
752. 打开转盘锁 https://leetcode-cn.com/problems/open-the-lock

岛屿数量
· ☕ 2 min read
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围

BFS 广度优先搜索
· ☕ 1 min read
之前看过的 BFS(Breadth First Search), 最近遇到类似问题时却没有想起. 在此再回顾一下, 并留下记录. 好记性毕竟不如坏笔头.

洗牌-乱序一个数组
· ☕ 1 min read
设计一个方法, 把一个数组随机打乱, 每一个元素不能在原来的位置上

DNA合成问题
· ☕ 1 min read
DNA分子是以4种脱氧核苷酸为单位连接而成的长链,这4种脱氧核苷酸分别含有A,T,C,G四种碱基。 碱基互补配对原则:A和T是配对的,C和G是

QuickSort快排
· ☕ 1 min read
快速排序-维基百科 一次快排分区的结果 class QuickSort { private int[] mArray; public QuickSort(int[] array) { this.mArray = array; } private void swap(int from, int to) { int t = mArray[from]; mArray[from] = mArray[to]; mArray[to] = t; } /** * 分区(原地版本) * * @param left 数组左侧 * @param

循环单词问题
· ☕ 1 min read
如果一个单词通过循环右移获得的单词,我们称这些单词都为一种循环单词。 例如:picture 和 turepic 就是属于同一种循环单词。 现在给出n个单词,需要统

排序实现
· ☕ 2 min read
冒泡排序 稳定排序,时间复杂度: $ O(n^{2}) $ ,额外空间: $ O(1) $ ,基于比较 1 2 3 4 5 6 7 8 9 10 11 12 def bubble_sort(array): # 从数组末尾到数组头遍历 for i in range(len(array) - 1, 0, -1): flag = True #

斐波拉契数列
· ☕ 1 min read
斐波拉契数列的第n项 斐波拉契数列: a(0) = 0 a(1) = 1 a(2) = 1 a(n) = a(n-1) + a(n-2) 递归实现 1 2 3 4 5 6 7 8 long fab1(int n) { if (n < 3) { return 1; } return fab1(n - 2) + fab1(n - 1); } 「遍历数组」

求最大公约数、幂运算
· ☕ 1 min read
求两个数的最大公约数 1 2 3 4 5 6 7 8 long gcd(long m, long n) { while (n != 0) { long ren = m % n; m = n; n = ren; } return m; } 幂运算 时间复杂度为O(logN)的算法 1 2 3 4 5 6

进制均值
· ☕ 1 min read
一个数A,如果按2到A-1进制表达时,各个位数之和的均值是多少? 结果用最简分数表示。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28