
算法
cy1046090768
这个作者很懒,什么都没留下…
展开
-
数组切割问题
假设数组A[1..2N]所有元素的和是SUM。模仿动态规划解0-1背包问题的策略,令S(k, i)表示前k个元素中任意i个元素的和的集合。显然:S(k, 1) = {A[i] | 1<= i <= k}S(k, k) = {A[1]+A[2]+…+A[k]}S(k, i) = S(k-1, i) U {A[k] + x | x属于S(k-1, i-1)package Array;public cla原创 2016-03-10 22:58:36 · 823 阅读 · 1 评论 -
把数组排成最小的数
思路:设计一个比较规则,让两个字符串假设说是m和n,如果组成的数字mn>nm,那么就返回nm,否则返回mn。package Array;import java.util.Arrays;import java.util.Comparator;public class MinNumber { //方法一:用comparable接口实现 public String PrintMinN原创 2016-03-20 10:02:58 · 303 阅读 · 0 评论 -
剑指offer-旋转数组的最小数字
题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的旋转,输出旋转数组中最小的元素。例如数组{3,4,5,1,2} 位{1,2,3,4,5}的一个旋转,该数组的最小值为1.思路:首先不考虑重复元素出现的情况,可以和二分查找一样, 用两个索引指针index1和index2分别指向数组的第一个元素和最后一个元素。根据题目中的旋转规则, 旋转后的数组中的第一个元原创 2016-04-17 16:31:12 · 307 阅读 · 0 评论