数据结构与算法
文章平均质量分 80
大雄没有叮当猫
好好学习,天天向上
展开
-
JSch - Java实现的SFTP
JSch是Java Secure Channel的缩写。JSch是一个SSH2的纯Java实现。它允许你连接到一个SSH服务器,并且可以使用端口转发,X11转发,文件传输等,当然你也可以集成它的功能到你自己的应用程序。 本文只介绍如何使用JSch实现的SFTP功能。 SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全转载 2017-09-22 16:02:10 · 435 阅读 · 0 评论 -
二维数组中的查找
题目:在一个二维数组中,每一行都是按照从左往右递增的顺序排序,每一列都是按照从上往下递增的顺序排序。请完成一个函数,输入这样一个二维数组和整数,判断数组是否有改整数。例如:下面的二位数组都是每行梅列递增,如果在这个数组中查找数字7,如果有就返回true,如果没有就返回fasle。 1 2 8 9 2 4 9 10 4 7 10 13 6 ...原创 2018-07-01 10:22:48 · 227 阅读 · 0 评论 -
判断两棵二叉树是否相同之java实现
package com.cb.java.algorithms.jianzhioffer.tree;/** * 判断两个二叉树是否相同 * * @author 36184 * */public class SameTree { public boolean isSameTree(TreeNode first, TreeNode second) { // 如果两颗树都为空则相同...原创 2018-07-08 12:52:07 · 1176 阅读 · 0 评论 -
判断一棵二叉树是否为对称树之java实现
package com.cb.java.algorithms.jianzhioffer.tree;public class SymmetricTree { class TreeNode { int data; // 数据域 TreeNode left;// 左子节点 TreeNode right; // 右子节点 public TreeNode(int data) { ...原创 2018-07-08 13:07:19 · 917 阅读 · 0 评论 -
有序数组的查找
题目描述给定一个有序的数组,查找某个数是否在数组中,请编程实现。分析与解法一看到数组本身已经有序,我想你可能反应出了要用二分查找,毕竟二分查找的适用条件就是有序的。那什么是二分查找呢?二分查找可以解决(预排序数组的查找)问题:只要数组中包含T(即要查找的值),那么通过不断缩小包含T的范围,最终就可以找到它。其算法流程如下:一开始,范围覆盖整个数组。将数组的中间项与T进行比较,如果T比数组的中间项要...原创 2018-07-02 16:31:12 · 1701 阅读 · 0 评论 -
查找有序二维数组的中位数
题目:给定 n×n 的实数矩阵,每行和每列都是递增的,求这 n^2 个数的中位数代码如下:package com.cb.java.algorithms.programmingmethod.search;/** * 给定 n×n 的实数矩阵,每行和每列都是递增的,求这 n^2 个数的中位数 * * @author 36184 * */public class SearchMedia...原创 2018-07-02 21:35:30 · 2021 阅读 · 0 评论 -
合并两个有序数组
题目:有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2。实现一个函数,把A2中的所有数字插入到A1中,并且所有的数字是排序的。代码如下:package com.cb.java.algorithms.jianzhioffer.array;/** * 有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2。<br> * 实现一个函数,把A2中的...原创 2018-07-02 22:36:06 · 321 阅读 · 0 评论 -
找出数组中出现次数超过一半的数字
题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。解法一:如果无序,那么我们是不是可以先把数组中所有这些数字先进行排序(至于排序方法可选取最常用的快速排序)。排完序后,直接遍历,在遍历整个数组的同时统计每个数字的出现次数,然后把那个出现次数超过一半的数字直接输出,题目便解答完成了。总的时间复杂度为O(nlogn + n)。但如果是有序的数组呢,或者经过排序把无序的数组变成有序后的...原创 2018-07-03 10:29:19 · 1428 阅读 · 1 评论 -
最大连续乘积子串
题目描述给一个浮点数序列,取最大乘积连续子串的值,例如 -2.5,4,0,3,0.5,8,-1,则取出的最大乘积连续子串为3,0.5,8。也就是说,上述数组中,3 0.5 8这3个数的乘积30.58=12是最大的,而且是连续的。解法一:暴力求解/** * 暴力求解:时间复杂度为O(n^2) * * @param arr * @param length * @return ...原创 2018-07-03 13:06:28 · 323 阅读 · 0 评论 -
归并排序之java实现
package com.cb.java.algorithms.sort;/** * 归并排序 * * @author 36184 * */public class MergeSort{ /** * 将一个数组的两半(各自有序)合并到一个数组 * * @param a * @param first * @param mid * @param last ...原创 2018-07-11 15:22:38 · 104 阅读 · 0 评论 -
寻找和为定值的两个数
题目描述输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(N)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。package com.cb.java.algorithms.programmingmethod.array;import java.util....原创 2018-07-05 15:01:11 · 143 阅读 · 0 评论 -
最大连续子数组和
package com.cb.java.algorithms.programmingmethod.array;/** * 输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 * 求所有子数组的和的最大值,要求时间复杂度为O(n)。 * * @author 36184 * */public class MaxSubArray ...原创 2018-07-06 20:46:53 · 151 阅读 · 0 评论 -
不修改数组找出重复的数字
描述:在一个长度为n+1的数组里的所有数字都在1~n的范围内,所以数组中至少有一个是重复的。请找出数组中任意一个重复的数字,但不能修改输入的数组。例如,如果输入长度为8的数组{2,3,5,4,3,2,6,7},那么对应的输出是重复的数字2或者3。这道题跟 面试题:数组中重复的数字 基本一样,但是限制了不能修改输入数组。思路1:创建一个n+1的辅助数组,然后逐一把原数组的每个数字复制到辅助数组。如果...原创 2018-06-29 21:44:54 · 231 阅读 · 0 评论 -
数组中重复的数字
题目:找出数组中重复的数字描述:在一个长度为n的数组里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应输出的重复数字为2或3。解法:0~n-1正常的排序应该是A[i]=i;因此可以通过交换的方式,将它们都各自放回属于自己的位置;从头到尾...原创 2018-06-29 20:41:11 · 138 阅读 · 0 评论 -
二叉查找树之java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.tree;/** * 二叉查找树 * * @author 36184 * */public class BinarySearchTree<T extends Comparable<T>> { private TreeNode<T&g...原创 2018-06-14 11:28:03 · 132 阅读 · 0 评论 -
字符串循环左移N位
/** * 将一个字符串中的子串左移n位 * 要求时间复杂度为o(n),空间复杂度为o(1) * @author * */public class LeftShiftNString {/*** 反转字符数组* @param s 字符数组* @param from 起始字符* @param to 截止字符*/private static vo原创 2018-04-24 21:22:29 · 924 阅读 · 0 评论 -
数据结构之线性表java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.list;/** * 顺序表的特点 在线性表中逻辑上相邻的数据元素,在物理存储位置上也是相邻的。<br> * 存储密度高,但要预先分配,可能会造成空间的浪费。 <br> * 便于随机存取 不便于插入和删除操作,会引起大量的数据元素的移动 *...原创 2018-06-11 16:22:03 · 213 阅读 · 0 评论 -
数据结构之栈的java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.list;public class GenericStack<T> { private int maxSize; // 栈的容量 private T[] stack; // 栈 private int top; // 栈顶元素 public Gener...原创 2018-06-11 16:23:40 · 136 阅读 · 0 评论 -
数据结构之队列的java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.list;/** * 循环队列 * @author 36184 * * @param <T> */public class GenericQueue<T> { private int maxSize; //队列容量 private T[]q...原创 2018-06-11 16:24:23 · 123 阅读 · 0 评论 -
数据结构之优先级队列的java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.list;public class GenericPriorityQ<T extends Comparable<T>> { private int maxSize; // 优先级队列容量 private int length; // 优先级...原创 2018-06-11 16:25:29 · 207 阅读 · 0 评论 -
数据结构之链表的java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.linklist;/** * 单链表 * * @author 36184 * */public class LinkList { private LinkNode first; // 头指针,指向第一个节点。头节点没有数据项 public LinkList() ...原创 2018-06-12 14:34:23 · 115 阅读 · 0 评论 -
冒泡排序之java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.sort;public class BubbleSort<T extends Comparable<T>> { /** * 元素交换 * @param a * @param b */ public void swap(T[]arr...原创 2018-06-13 10:49:41 · 103 阅读 · 0 评论 -
选择排序之java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.sort;/** * 选择排序 * * @author 36184 * */public class SelectionSort<T extends Comparable<T>> { /** * 元素交换 * * @param a...原创 2018-06-13 11:07:25 · 118 阅读 · 0 评论 -
插入排序之java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.sort;/** * 插入排序 * * @author 36184 * */public class InsertSort<T extends Comparable<T>> { /** * 插入排序 * * @param arr ...原创 2018-06-13 11:39:05 · 109 阅读 · 0 评论 -
希尔排序之java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.sort;/** * 希尔排序 * * @author 36184 * */public class ShellSort<T extends Comparable<T>> { /** * 希尔排序 * @param arr */ p...原创 2018-06-13 13:45:40 · 121 阅读 · 0 评论 -
快速排序之java实现
package com.cb.java.algorithms.datastructure.yanweimindatastructure.sort;public class QuickSort<T extends Comparable<T>> { /** * 元素交换 * * @param a * @param b */ public void swap(T[] ...原创 2018-06-13 15:38:34 · 124 阅读 · 0 评论 -
二叉树java实现
package com.cb.java.algorithms.jianzhioffer.tree;import java.util.ArrayList;import java.util.List;public class BinaryTree<E> { public static class Node<E> { Node<E> left = nu...转载 2018-07-07 11:12:44 · 115 阅读 · 0 评论