摘要:
异或运算的特性: 异或自己得0,任何数异或0得自己本身; 具有交换律、结合律,例如 1^2^3^4^2^3^1 = (1^1)^(2^2)^(3^3)^4 = 0^0^0^4 = 0^4 = 4; 总结:异或运算擅长找不同。 例题(leetcode389找不同): 1 class Solution 阅读全文
摘要:
动态规划类问题主要分为两大类: 1.求最优解(典型的背包问题) 2.计数(统计方案) 以上两类都存在递推性质。 第一类的递推称为最优子结构 -- 当前问题的最优解取决于子问题的最优解。 当前问题的方案数取决于子问题的方案数时,也可以用动态规划解决。 第二类例子: 机器人走方格(leetcode63. 阅读全文
摘要:
要求: 现给一串数字,按照顺序从根插入到二叉树中。但是插入的过程要注意,左子树的值要小于等于父节点,右子树的值要大于父节点。 例如,序列为1 3 4 2 3 0,插入对应的二叉树为 1 / \ 0 3 / \ 2 4 \ 3 建好二叉树后,从根开始输出每行数字,每层按照从左到右的顺序输出。 输入: 阅读全文
摘要:
要求: 用递归实现,每次的合并操作结束后,输出当前的排序结果。 输入: 第一行,一个数n,表示n个数需要排序。 第二行,输入这n个需要排序的数字。 (注意,当n为奇数时,划分为两部分,前半部分为n/2+1,后半部分为n/2) 标准输入: 9 9 8 7 6 5 4 3 2 1 标准输出: 8 9 7 阅读全文
摘要:
这个问题我之前上百度搜了一下,只有百度经验有, 但是百度经验的图片看不清,而且按照百度经验的回答,我找不到它说的用户设置 于是我问了一下同学,很简单。 右击终端那条框,我们可以得到下面这张截图 点击将面板移动到右侧就ok啦。 阅读全文
摘要:
问题: 设有n个正整数,将他们排成一排,组成一个最大的多位整数。 INPUT: 第一行,正整数的个数n 第二行,n个正整数 OUTPUT: 一个正整数,表示最大的整数。 输入样例: 3 13 312 343 样例输出: 34331213 思路: 如果我们把每个输入的正整数当作正数来处理的话, 我们会 阅读全文
摘要:
常见排序主要有以下四种: 1.交换排序 2.选择排序 3.插入排序 4.归并排序 (以下代码基本都有输出每步排序结果) 一.交换排序 交换排序主要是冒泡排序和快排 1.冒泡排序 基本方法: 设待排序对象序列中的对象 个数为 n。 最多作 n-1 趟排序。在第 i 趟中顺次两两 比较r[j-1].Ke 阅读全文
摘要:
快排算法 快排和冒泡都是基于交换的思想,但是进行了改进,更为高效。 流程: (1)首先设定一个分界值,通过分界值将数组分成左右两部分。 (2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。 (3)左右两个部分重复上述排序。 从上述流程可以看出,这就是一个递归的过程,递归终 阅读全文
摘要:
Shell排序 Shell排序是大量数据需要排序时,更为高效的插入排序。它的算法思想基于插入排序的算法思想 流程: (1)将n个元素数组分成n/2个数字序列,第一个数据和第n/2个数据为一对,等等,以此类推 (2)一次循环使每一个数对排列好顺序 (3)变成n/4个数对,再次排序。 (4)不断重复上述 阅读全文
摘要:
(blog主要用于展示算法流程) 插入排序算法:通过对未排序的数据逐个插入合适的位置而完成排序工作 流程: (1)先对数组前两个数据进行从小到大排序 (2)将第三个数据与前两个数据比较,将第三个数据插入合适的位置 (3)将第四个数据插入已排序好的前三个数据中 (4)不断重复,直到把最后一个数据插入合 阅读全文