#数据结构与算法

算法笔记_035:寻找最小的k个数(Java)

/目录1问题描述2解决方案2.1全部排序法2.2部分排序法2.3用堆代替数组法2.4线性选择算法有n个整数,请找出其中最小的k个数,要求时间复杂度尽可能低。先对这n个整数进行快速排序,在依次输出前k个数。具体代码如下:packagecom.liuzhen.array_2;publicclassSearchMinK{//...

算法笔记_036:预排序(Java)

/目录1问题描述2解决方案2.1检验数组中元素的唯一性2.2模式计算在计算机科学中,预排序是一种很古老的思想。实际上,对于排序算法的兴趣很大程度上是因为这样一个事实:如果列表是有序的,许多关于列表的问题更容易求解。显然,对于包含了排序操作,这种算法的时间效率依赖于所选用的排序算法的效率。对于预排序的具体思想应用请参考下...
代码星球 代码星球·2021-02-09

算法笔记_037:寻找和为定值的两个数(Java)

/目录1问题描述2解决方案2.1排序夹逼法输入一个整数数组和一个整数,在数组中查找两个数,满足他们的和正好是输入的那个整数。如果有多对数的和等于输入的整数,输出任意一对即可。例如,如果输入数组[1,2,4,5,7,11,15]和整数15,那么由于4+11=15,因此输出4和11。首先将整数数组,使用合并排序进行从小打到...

算法笔记_038:特殊回文数(Java)

/目录1问题描述2解决方案2.180分解法2.2 网友标答解法问题描述  123321是一个非常特殊的数,它从左边读和从右边读是一样的。  输入一个正整数n,编程求所有这样的五位和六位十进制数,满足各位数字之和等于n。输入格式  输入一行,包含一个正整数n。输出格式  按从小到大的顺序输出满足条件的整数,每个...

算法笔记_039:杨辉三角形(Java)

/目录1问题描述2解决方案问题描述杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。  它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。  下面给出了杨辉三角形的前4行:     1    11   121  1331...

算法笔记_040:二进制幂(Java)

/目录1问题描述2解决方案2.1从左至右二进制幂2.2从右至左二进制幂使用n的二进制表示,计算a的n次方。此方法计算a的n次方具体思想,引用《算法设计与分析基础》第三版一段文字介绍:  具体代码如下:packagecom.liuzhen.chapter6;importjava.util.ArrayL...
代码星球 代码星球·2021-02-09

算法笔记_041:寻找和为定值的多个数(Java)

/目录1问题描述2解决方案输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来。上述问题是典型的背包问题的应用,即先找出n个数的所有组合,再在这些组合中寻找组合数相加之和等于sum的组合,并依次输出这些组合中的数。具体代码如下:packageco...

算法笔记_042:求最小公倍数(Java)

/目录1问题描述2解决方案何为最小公倍数?能同时被数字m和数字n整除的最小整数。例如,24和60的最小公倍数等于120。下面请编写相关函数实现求取数字m和n的最小公倍数。关于本文求解最小公倍数的思想,来自于《算法设计与分析基础》第三版上一段讲解,具体如下: 具体代码如下:packagecom.liuzhen....

算法笔记_043:最大连续子数组和(Java)

/目录1问题描述2解决方案2.1蛮力枚举法2.2动态规划法给定一个整数数组,数组里可能有正数、负数和零。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。例如,如果输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},那么输出为该子数...

算法笔记_044:表达式计算求值(Java)

/目录1问题描述2解决方案问题描述  输入一个只包含加减乖除和括号的合法表达式,求表达式的值。其中除表示整除。输入格式  输入一行,包含一个表达式。输出格式  输出这个表达式的值。样例输入1-2+3*(4-5)样例输出-4数据规模和约定  表达式长度不超过100,表达式运算合法且运算过程都在int内进行。 &...

算法笔记_045:币值最大化问题(Java)

/目录1问题描述2解决方案2.1动态规划法给定一排n个硬币,其面值均为正整数c1,c2,...,cn,这些整数并不一定两两不同。请问如何选择硬币,使得在其原始位置互不相邻的条件下,所选硬币的总金额最大。本文所写代码思想参考自《算法设计与分析基础》第三版上一段讲解,具体如下:  具体代码如下:pack...

算法笔记_046:跳台阶问题(Java)

/目录1问题描述2解决方案2.1递归法2.2迭代法一个台阶总共有n级,如果一次可以跳1级,也可以跳2级,求总共有多少种跳法。如果整个台阶只有1级,则显然只有一种跳法。如果台阶有2级,则有两种跳法:一种是分两次跳,每次跳1级;另一种是一次跳2级。推广到一般情况。则可以把n级台阶时的跳法看成是n的函数,记为f(n)。当n&...

算法笔记_047:复数运算(Java)

/目录1问题描述2解决方案编程实现两个复数的运算。设有两个复数和,则他们的运算公式为:  要求:(1)定义一个结构体类型来描述复数。  (2)复数之间的加法、减法、乘法和除法分别用不用的函数来实现。  (3)必须使用结构体指针的方法把函数的计算结果返回。  说明:用户输入:运算符号(+,-,*,/)abcd.  输出:...

算法笔记_048:找零问题(Java)

/目录1问题描述2解决方案2.1动态规划法现需找零金额为n,则最少需要用多少面值为d1<d2<d3<...<dm的硬币?(PS:假设这m种面值d1<d2<d3<...<dm的硬币,其中d1=1,且每种硬币数量无限可得)本文编码思想参考自《算法设计与分析基础》第三版,具体讲...

算法笔记_049:奇偶数排序(Java)

/目录1问题描述2解决方案2.1一头一尾指针往中间扫描法2.2一前一后两个指针同时往后扫描法给定一个整数数组,请调整数组中数的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。要求时间复杂度为O(n)。具体代码如下:packagecom.liuzhen.array_2;publicclassOddEve...
首页上一页...1819202122...下一页尾页