您的位置:首页 > 其它

常见算法总结(2)

2014-09-10 21:52 141 查看
本博客中的算法均使用java语言写就,其中有我自己写的,也有参考了其它人的写法(多数是看到别人用C/C++写算法的)进行修改的,如若大家觉得其中代码有什么问题的话,欢迎写在评论上,我会及时进行修改和改进。

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数组中两个位置的值。

好吧,边敲代码边写博客两个半小时了要,又累又困,就先写到这吧,以后有机会、有时间再继续……
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: