
算法
chwnpp2
这个作者很懒,什么都没留下…
展开
-
字符串-组合
题目:给定一个字符集合,求其元素拆解后的所有组合。 如:给定集合{a,b,c},其元素拆解后的所有组合为:I/System.out: cI/System.out: bI/System.out: bcI/System.out: aI/System.out: acI/System.out: abI/System.out: abc参考:Java实现全排列、组合算法Java代码实现:原创 2017-11-13 16:31:34 · 220 阅读 · 0 评论 -
字符串-放回全排列
题目:求一个字符集合的放回全排列。 如:{a,b,c},输出结果为27种:I/System.out: aaaI/System.out: aabI/System.out: aacI/System.out: abaI/System.out: abbI/System.out: abcI/System.out: acaI/System.out: acbI/System.out: accI原创 2017-11-13 16:11:23 · 424 阅读 · 0 评论 -
字符串-全排列
题目:输入一串字符,然后对字符进行全排列并打印。 如“abc”,全排列结果为:”abc”,”acb”,”bac”,”bca”,”cab”,”cba”。 这是笔者经历的阿里一面的笔试题,折戟在此,是以为记。参考:Java实现全排列、组合算法分析: 1、从字符串中选择一个作为第一个字符,然后对剩下的字符串进行全排列; 2、核心内容就是置换; 3、打印放在递归的出口处进行; 4、要考虑去重。J原创 2017-11-13 15:34:29 · 446 阅读 · 0 评论 -
快速排列
参考:搜狗百科 快速排序特点:基于分治法,选取某一个元素作为主元,将原集合分为三部分:左边集合的元素都小于等于主元,主元,右边集合的元素都大于等于主元。 然后利用递归思想,对左右两边的集合分别进行快速排序。快速排序在一般情况下是最实用的排序方法之一。算法在最坏的情况下运行时间为O(n^2),平均时间复杂度为O(nlogn)。。空间复杂度为S(1),即常数级空间。但需要注意递归栈上需要花费最少log原创 2017-11-14 12:45:54 · 298 阅读 · 0 评论 -
算法 - 合并两个有序数组为一个有序数组
题目:有ListaList和ListbList两个有序数组,将其合并为ListcList。 如:ListaList = {1,3,5,7,9}; ListbList = {2,4,6,8,10}; 合并之后,cList为{1,2,3,4,5,6,7,8,9,10}.背景:这是算法面试中常见的题目,笔者经历中快手和昆仑万维,都出的是这个题。算法实现如下: private List<Inte原创 2017-11-30 10:35:53 · 5360 阅读 · 0 评论 -
算法-数组元素循环右移
题目:有整数数组a,求其循环右移k位后的值,要求最小空间复杂度。 例如: int[] a = {1,2,3,4,5,6,7};循环右移5位后, 值为:{3,4,5,6,7,1,2}。 最基本的实现: public void toRightMove(int[] nums, int k) { if (k == 0 || k == nums.length) {原创 2017-12-07 12:00:37 · 1225 阅读 · 0 评论