数据结构与算法
Androider_Zxg
安卓应用开发
展开
-
Java单链表:输入两个有序链表合成为一个有序链表(最笨的办法)
一个比较常见的算法题:合并两个已知排序的单链表,合并后保持有序。网上有很多解法,都是什么所谓的并轨排序,将一个链表合并插入到另一个链表中。自己想出个最笨的方法,维护第三个resultSingleLink。从两个输入的链表中取值比较并插入到resultSingleLink中。先看下我定义的SingleLink,其中提供了很多API方便调用,顺便可以复习一下单链表写法。如下:/** * Create...原创 2018-06-23 16:23:08 · 1092 阅读 · 0 评论 -
KMP算法的个人理解
KMP算法求解的是什么问题?字符串匹配。给你两个字符串,寻找其中一个字符串是否包含另一个字符串,如果包含,返回包含的起始位置。例如如下两个字串:String a = "bacbababadababacambabacaddababacasdsd";String b="ababaca"KMP算法为什么快?首先,我们采用一般的算法求解匹配字符串的问题,假设目标字串为"abcdcabccdacb",长度为...原创 2018-06-02 14:56:40 · 241 阅读 · 0 评论 -
算法练习:int数组,将其中正数负数各移到一边
刷题看到这样一道题,以前都会上网找别人的思路,现在尝试自己思考分析。解决思路:从左遍历数组,找到第一个为负数的元素,从右向左找到第一个为正数的元素,交换。其中需要维护一个end变量记录右边位置,需要注意的是,end必须大于i。代码如下:/** * 将数组中正负数调整到各自一边 */public class ArithmerticPractice_12 { public ...原创 2018-07-18 17:04:48 · 1753 阅读 · 0 评论 -
01背包问题Java(动态规划和暴力求解)
比较经典的一个问题,在理清思路之后,写出了代码。动态规划的思想还是将大的问题分解成小的的问题。或者说是分成小的步骤。例如在背包问题中,想求解背包容量为N的最大价值,先求解容量为N-1的最大价值,一步一步向前推,最终在返回来。自己也是理解了好久,突然有一天早上刷牙,就把问题想明白了。还是要多悟,多说无益,看代码:package com.zxg.algorithm.PackageQuestion...原创 2018-07-25 14:07:00 · 6864 阅读 · 1 评论 -
回溯法解01背包问题
关于回溯法的概念,这篇文章讲的比较通俗易懂:https://blog.csdn.net/jarvischu/article/details/16067319贴出阅读这篇文章后解决01背包问题的Java代码,注释中加入了自己的理解package com.zxg.algorithm.backtrack;/** * 回溯法解01背包问题 * 背包问题的概念不再赘述。这里主要讲解下回溯法...原创 2018-08-16 18:10:25 · 4887 阅读 · 2 评论