辗转相除法求最大公约数
定理:两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。
最大公约数缩写为gcd。
gcd(a, b) = gcd(b, a mod b)(前提条件是假设a > b 且 r = a mod b, r 不为0)
辗转相除法,a除以b,b除以a,如果某个数字小于等于0,返回结果
1 | gcd(a, b) = gcd(b, a mod b) |
1 | public int gcd(int x, int y) { |
1 | 配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。 |
1 | class Solution { |
1 | class Solution { |
1 | 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。 |
1 | class Solution { |
1 | 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 |
1 | class Solution { |
1 | class Solution { |
操作 | 结果 |
---|---|
原始数组 | 1 2 3 4 5 6 7 |
翻转所有元素 | 7 6 5 4 3 2 1 |
翻转 [0, k % (n−1)] 区间的元素 | 5 6 7 4 3 2 1 |
翻转 [k % n,n−1] 区间的元素 | 5 6 7 1 2 3 4 |
1 | class Solution { |
1 | 假设你有两个数组,一个长一个短,短的元素均不相同。找到长数组中包含短数组所有的元素的最短子数组,其出现顺序无关紧要。 |
1 | class Solution { |
1 | 编写函数,实现许多图片编辑软件都支持的「颜色填充」功能。 |
1 | class Solution { |
1 | 给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。 |
1 | /** |
难度: 中等
给定一个整数 n,生成所有由 1 … n 为节点所组成的 二叉搜索树 。
示例:
1 | 输入:3 |
提示:
0 <= n <= 8
枚举根节点,递归的生成左子树和右子树
1 | class Solution { |
1 | 二叉树数据结构TreeNode可用来表示单向链表(其中left置空,right为下一个链表节点)。实现一个方法,把二叉搜索树转换为单向链表,要求依然符合二叉搜索树的性质,转换操作应是原址的,也就是在原始的二叉搜索树上直接修改。 |
1 | /** |
1 | 有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
1 | class Solution { |
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true