上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
摘要: 1、问题描述假设有 1 元、3 元、5 元的硬币无限个,现在需要凑出 11 元,问如何组合才能使硬币的数量最少?2、算法分析有最小单位 1 的情况下,可以使用贪心算法:NSInteger count = m / 5;NSInteger mol = m % 5; if(mol/3 > 0) { count++; mol %= 3;} count += mol;但当硬币的种... 阅读全文
posted @ 2020-03-15 13:38 和风细羽 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 1、问题描述将一个正整数 n 写成如下形式n = m1 + m2 + ... + mi; (其中 mi 为正整数,并且 1 1 f(n, m) = f(n, n-1) + 1 加上的 1 代表 n + 0 = n 这个划分方案③、n n的情况④、n > m f(n, m) = f(n, m-1) + f(n-m, m);f(n, m-1) 表示划分方案中没... 阅读全文
posted @ 2020-03-15 13:36 和风细羽 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 1、问题描述给定一个字符串s,找到s中最长的回文子串。2、算法分析大多数问题都可以用暴力法解决。暴力法将选出所有子字符串可能的开始和结束位置,并检验它是不是回文。时间复杂度:O(n3),假设n是输入字符串的长度,则 (n *(n−1))/2​为此类子字符串(不包括字符本身是回文的一般解法)的总数。因为验证每个子字符串需要O(n)的时间,所以运行时间复杂度是O(n3)。空间复杂度... 阅读全文
posted @ 2020-03-15 13:35 和风细羽 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 1、问题描述给定一个无序的整数数组,找到其中最长上升子序列的长度。如:[5, 3, 4, 8, 6, 7] 返回 4。2、算法分析面对这个问题,首先要定义一个"状态"来代表它的子问题, 并且找到它的解。注意,大部分情况下,某个状态只与它前面出现的状态有关,而独立于后面的状态。假如考虑求 A[1], A[2], ..., A[i],i d[i]) d[i] = d[... 阅读全文
posted @ 2020-03-15 13:34 和风细羽 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 1、问题描述计算 an2、算法分析先将 n 变一变,寻找新的计算路径。预处理就是变治法的根本。如果单纯循环执行 n 次相乘,那么时间复杂度为 O(n)。可以利用二进制幂大大改进效率。主要思路是:将十进制的 n 转换成二进制的数组序列 b[]。二进制幂求解有两种方法:从左至右二进制幂和从右至左二进制幂。从左至右二进制幂变换:an = a(b[n]2m + ... + b[0]20)先求 n 的二进制... 阅读全文
posted @ 2020-03-15 13:33 和风细羽 阅读(1209) 评论(0) 推荐(0) 编辑
摘要: 1、问题描述在一个有序(升序)数组查找一个数 x2、算法分析暴力的做法就是拿 x 跟数组里面每个数比较一下,然后返回找到的 x 的下标。这里明显可以使用分治的思想:可以把数组分成很多部分,在每个部分里面查找 x。如果所有部分都没有找到 x,那么把这些子问题合并起来后,表示整个数组里没有 x。这很好的反应了分治的思想,先分解成很多小问题,解决这些小问题,把解决的小问题合并起来,大问题就解决了。3、代... 阅读全文
posted @ 2020-03-15 13:30 和风细羽 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 一、寻找两个有序数组的中位数1.1 问题描述给定两个大小为 m 和 n 的不同时为空的有序数组nums1和nums2。找出这两个有序数组的中位数,并且要求算法的时间复杂度为O(log(m + n))。1.2 算法分析题目要求的时间复杂度是 O(log(m + n)),要产生这样级别的时间复杂度只有采用二分查找法,用分治递归的思路来考虑这个问题。需要转换题目中求中位数的问题为求第 k 小数的... 阅读全文
posted @ 2020-03-15 13:29 和风细羽 阅读(412) 评论(0) 推荐(1) 编辑
摘要: 一、问题描述计算两个很大整数的结果,例如:27392361983108271361039746313* 37261038163103818366341087632113二、算法分析先用一个简单的例子,如 234 * 456 =???来考虑。在这里考虑将 456 拆分为 4、5、6,然后分别去乘以 234。 234... 阅读全文
posted @ 2020-03-15 13:27 和风细羽 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 01 背包问题是用来介绍动态规划算法最经典的例子。一、解释 1①、状态方程f[i, j] = Max{ f[i-1, j-Wi] + Pi, f[i-1,j] }( j >= Wi )f[i,j] 表示在前 i 件物品中选择若干件放在承重为 j 的背包中,可以取得的最大价值。Pi 表示第 i 件物品的价值。决策:为了背包中物品总价值最大化,第 i 件物品应该放入背包中吗 ?②、实例假设山洞里共... 阅读全文
posted @ 2020-03-15 13:25 和风细羽 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 一、Base64 编码由来为什么会有 Base64 编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像 ASCII 码的控制字符就不能通过邮件传送。这样用途就受到了很大的限制,比如图片二进制流的每个字节不可能全部是可见字符,所以就传送不了。最好的方法就是在不改变传统协议的情况下,做一种扩展方案来支持二进制文件的传送。把不可打印的字符也能用可打印字符来表示,问题就... 阅读全文
posted @ 2020-03-15 13:19 和风细羽 阅读(451) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页