常见算法总结(2)
2014-09-10 21:52
141 查看
本博客中的算法均使用java语言写就,其中有我自己写的,也有参考了其它人的写法(多数是看到别人用C/C++写算法的)进行修改的,如若大家觉得其中代码有什么问题的话,欢迎写在评论上,我会及时进行修改和改进。
1,反转一个单向链表。
链表是一种常见的数据结构,面试题目中也经常遇到,反转链表是其中一个示例。
为了反转这个单向链表,我在这里准备了一个数据结构,用以模拟链表中的节点:
View Code
其中含有两个参数的permutate是这个方法的核心,方法体内循环中用到了递归,还真不好理解,就先记得这样能够解决问题就行了吧。swap函数用交换char数组中两个位置的值。
好吧,边敲代码边写博客两个半小时了要,又累又困,就先写到这吧,以后有机会、有时间再继续……
1,反转一个单向链表。
链表是一种常见的数据结构,面试题目中也经常遇到,反转链表是其中一个示例。
为了反转这个单向链表,我在这里准备了一个数据结构,用以模拟链表中的节点:
public static void permutate(String s) { if (s == null || "".equals(s)) { return; } int count = s.length(); char[] chs = s.toCharArray(); permutate(chs, count); } public static void permutate(char[] chs, int count) { // base case if (count == 1) { System.out.println(chs); return; } // loop with recursion for (int i = 0; i < chs.length; i++) { swap(chs, i, count - 1); permutate(chs, count - 1); swap(chs, i, count - 1); } } // swap the value of i and j. public static void swap(char[] arr, int i, int j) { char tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; }
View Code
其中含有两个参数的permutate是这个方法的核心,方法体内循环中用到了递归,还真不好理解,就先记得这样能够解决问题就行了吧。swap函数用交换char数组中两个位置的值。
好吧,边敲代码边写博客两个半小时了要,又累又困,就先写到这吧,以后有机会、有时间再继续……
相关文章推荐
- 常见密码算法总结--(3)加密模式的openssl代码分析之cbc模式
- 几种常见模式识别算法整理和总结
- 常见算法思路总结
- 几种常见模式识别算法整理和总结
- 常见算法总结
- 常见密码算法总结--(1)分组对称密码
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结
- 【算法总结--数组相关】双指针法的常见应用。
- 常见算法总结
- BiTree 二叉树 基础算法及常见题目总结
- 常见密码算法总结--(4)加密模式的openssl代码分析之cfb模式
- 几种常见模式识别算法整理和总结
- BiTree 二叉树 基础算法及常见题目总结
- 几种常见模式识别算法整理和总结
- 几种常见模式识别算法整理和总结