一.分治法设计一个算法,统计输入的非空字符串中给定字符的个数。 二.非递归形式设计二分搜索程序。 三.16个硬币放袋子里,其中有一枚硬币是假币,并且那个伪造的硬币比真币轻,设计一个算法找到那枚假币。 四. 大于 1 的正整数 n,设计一个算法计算 n 有多少种不同的分解式。 五.给定 a, 分治法设 ...
分类:
其他好文 时间:
2019-10-06 16:35:32
阅读次数:
113
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路: 采用分治法,先找到根节点,再根据根节点找到左右子树序列,在判断左右子树序列是否满足二叉树的后序遍历。 由题意可知,后序遍历序列最后一个元数就 ...
分类:
其他好文 时间:
2019-10-05 20:15:38
阅读次数:
81
1.快速排序 1. 算法描述 快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想 分治法也确实实用。快速排序是一种既不浪费空间又可以快一点的排序算法。 2. 算法步骤 先从数列中取出一个数作为“基准”。 分区过程:将比这个“基准”大的数全放到“基 ...
分类:
编程语言 时间:
2019-10-05 14:22:19
阅读次数:
111
求n个人(n = 2k)安排循环赛的赛程表,要求任意两组都要塞一场 分治法思想: 1.将原先的问题细分为多个子问题; 2.求得子问题的解; 3.将子问题的解合并求得问题的解; 对于赛程安排,可以先以一个人为单位,两个人为一组安排比赛,之后再以之前的两个人为单位,四个人为一组安排比赛,以此类推,会发现 ...
分类:
其他好文 时间:
2019-10-04 21:20:30
阅读次数:
93
快速排序是从冒泡排序演变而来,但比冒泡排序高效的多,所以叫做快速排序。同冒泡排序一样,快速排序也属于交换排序,通过元素之间的比较和交换位置来达到排序的目的。不同的是它采用了分治法。冒泡排序在每一轮只把一个元素冒泡到数列的一端,而快速排序在每一轮挑选一个基准元素,并让其他比它大的元素移动到数列一边,比 ...
分类:
编程语言 时间:
2019-09-29 12:52:38
阅读次数:
75
1.实践题目 PTA算法 7-1 二分查找 2.问题描述 3.算法描述 4.算法时间及空间复杂度分析 (1)时间复杂度: 每经过一次比较,数组a的大小就变为原来的一半,则有T(n) = O(1) + T(n/2) = O(logn) (2)空间复杂度: 因为定义的变量a[]所分配的空间大小不随n和x ...
分类:
编程语言 时间:
2019-09-22 21:46:39
阅读次数:
86
分治法的思想就是把一个难以解决的大问题分解成很多个小规模的问题--分而治之,说实话我不明白和dp的区别 ...
分类:
编程语言 时间:
2019-09-13 14:01:40
阅读次数:
97
Leetcode之分治法专题-654. 最大二叉树(Maximum Binary Tree) 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 通过给定的数组构建最大二叉树,并且输出这个树的根节点。 示例 : 提示: 分别找l到r区间里的最大值,然后再构造其左右的子树就ok了。 ...
分类:
其他好文 时间:
2019-09-13 11:03:27
阅读次数:
112
思路: 分治法。记最大子序和为maxResult,函数为int getMaxSub( *, * ) {}。 向量A= [a1, a2, a3, ...., ai, ai+1, a+2, ......, aj-1, aj], maxResult = max( maxresult(a1, ......, ...
分类:
其他好文 时间:
2019-09-09 15:12:29
阅读次数:
108
Leetcode之动态规划(DP)专题-53. 最大子序和(Maximum Subarray) 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 定义:dp ...
分类:
其他好文 时间:
2019-09-06 13:21:35
阅读次数:
79