题目大意:输入一个字符串,输出它的下一个字典序排列。
字典序算法思想:
1.从右向左寻找字符串找出第一个a[i]
2.从右向左找出第一个大于a[j]的元素a[i];
3.swap(a[i],a[j])
4.将a[i]......到a[stelen(a)]倒序
5.输出a
代码如下:
#include
#include
#include
#include
#include
usin...
分类:
其他好文 时间:
2014-09-30 22:56:00
阅读次数:
235
动态规划的基本思想是将待求解问题分解成若干个子问题,先求解子问题,并将这些子问题的解保存起来,如果以后在求解较大子问题的时候需要用到这些子问题的解,就可以直接取出这些已经计算过的解而免去重复运算。保存子问题的解可以使用填表方式,例如保存在数组中。用一个实际例子来体现动态规划的算法思想——硬币找零问题...
分类:
其他好文 时间:
2014-09-29 14:25:20
阅读次数:
246
算法思想:http://www.cnblogs.com/lichen782/p/leetcode_minimum_window_substring_3.html 1 public class Solution { 2 public String minWindow(String S, Str...
算法思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。(1) 分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题,然.....
分类:
其他好文 时间:
2014-09-24 10:42:06
阅读次数:
181
题记:最近刚研究了动态规划,感觉确实是算法思想中比较晦涩深奥的一种,解法2就是用动态规划,一般都是用数组记录尝试过的解法结果,为后续的解法提供剪枝。对于这道题目,解法1,解法3的思路比较简单易懂。解法1:用两个for循环找出所有子串,第三个for循环用于判断该子串是否为回文,是回文则且比已找到的回文...
分类:
其他好文 时间:
2014-09-21 22:25:31
阅读次数:
748
算法思想(从小到大排序)
将待排序数组看左右两个序列,左序列有序,有序列无序。假设第一个数array[0]为有序列,那么array[1,N-1]为无序列.循环遍历无序列,找出array[i]在有序列中应该插入的位置,插入。例如一个乱序数组为{1,3,2,4 , 假如有序列为 { 1,3 } 无序列循环到2时 ,那么2在有序列中的位置应该是1 - 3 中间 , 所以 [ 3. . .2 )...
分类:
其他好文 时间:
2014-09-16 18:58:40
阅读次数:
329
我们先来玩一个猜数字游戏:我心里默念一个1~64之间的数,你来猜(你只能问答案是“是”或“否”的问题)。为了保证不论在什么情况下都能以尽量少的次数猜中,你应该采取什么策略呢?很显然,二分。先是猜是不是位于1~32之间,排除掉一半可能性,然后对区间继续二分。这种策略能够保证无论数字怎么跟你捉迷藏,都能...
分类:
其他好文 时间:
2014-09-13 18:28:55
阅读次数:
230
计数排序计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。算法思想计数排序对输入的数据有附加的限制条件:1、输入的线性表的元素属于有限偏序集S...
分类:
其他好文 时间:
2014-09-13 17:15:25
阅读次数:
199
leetcode 经典短小难题 Gas Station ,很好算法思想。...
分类:
其他好文 时间:
2014-09-11 13:56:32
阅读次数:
191
算法思想:
遍历数组array[N],索引为 i,然后算出[i+1,N-1]区间中的最小数,与array[i]交换,最后一个数因为只有一个,所以不用比较外循环为 N-2次
import java.util.Arrays;
/***
* @title 选择排序
* @author michael.mao
* @date 2014年9月10日 下午2:32:01
* @ver...
分类:
其他好文 时间:
2014-09-10 15:54:50
阅读次数:
214