数据结构与算法
第十七签
这个作者很懒,什么都没留下…
展开
-
给定一个字符串, 找出其中不含有重复字符的最长子串的长度
给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,答案必须是子串的长度,“pwke” 是一个子序列, 不是子串。class Solutio原创 2020-11-07 15:54:03 · 2540 阅读 · 0 评论 -
两数相加
给出两个非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807class Solution { public L...原创 2020-11-03 14:31:53 · 108 阅读 · 0 评论 -
给定一个整数数组 nums 和一个目标值 target,在数组中找出和为目标值的那两个整数,并返回他们的数组下标
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]class Solution { public int[] twoSum(int[] nums, int target) {原创 2020-10-31 20:44:48 · 245 阅读 · 0 评论 -
Java二分插入排序
public class BinaryInsertSort{ public static void main(String args []){ int[] a = { 49, 38, 65, 97, 176, 213, 227, 49, 78, 34, 12, 164, 11, 18,1 }; System.ou转载 2016-03-16 14:40:37 · 236 阅读 · 0 评论 -
Java插入排序
public class InsertSort{ public static void main(String [] args){ int[] a={33,44,23,77,78}; System.out.println("排序之前:"); for(int i=0;i原创 2016-03-15 10:03:57 · 144 阅读 · 0 评论 -
插入排序
一、插入排序 1. for j=2 to A.length 2. key=A[j] 3. //Insert A[j] into the sorted sequence A[1..j-1] 4. i=j-1 5. while i>0 and A[i]>key 6. A[i+1]=A[i]原创 2016-09-11 10:49:35 · 212 阅读 · 0 评论 -
ArrayList类的实现
package com.dhy.test;import java.util.Iterator;/** * @Description: TODO * @author: Jocean <jocean.cool@163.com> * @date Feb 11, 2018 8:51:20 PM */public class MyArrayList<String> implement...原创 2018-02-11 22:20:26 · 454 阅读 · 0 评论 -
如何实现字符串中的括号匹配
import java.util.ArrayList;import java.util.List;/** * @Description: TODO * @author: Jocean <jocean.cool@163.com> * @date Oct 28, 2018 8:56:36 PM */public class BracketMatch{...原创 2018-10-28 22:15:11 · 1097 阅读 · 0 评论 -
冒泡排序 选择排序 插入排序
冒泡排序:private static void bubbleSort( int[] array ) { int temp; int len = array.length; for( int i = 0; i < len - 1; i++ ) { for( int j = 0; j <...原创 2019-06-23 14:58:41 · 152 阅读 · 0 评论 -
双向链表,定义一个节点,具有next、previous和data属性
public class Node {public Node next;public Node previous;private int data;// 节点中存放的数据public Node(int data) {this.data = data;}public String toString() {// 覆盖该方法,用来打印该节点return d原创 2015-08-16 21:20:58 · 1661 阅读 · 0 评论 -
Java实现简单的二叉树
package test;public class Tree {/*** @param args*/TreeNode root;TreeNode parent;boolean b;public static void main(String[] args) {// TODO Auto-generated method stubTree原创 2015-08-23 14:36:35 · 456 阅读 · 0 评论 -
双向链表类DoubleLink,提供addFirst,addEnd,delete功能
package test;public class DoubleLink { private Node first; private Node end; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub DoubleLink原创 2015-08-17 10:04:52 · 877 阅读 · 0 评论 -
Java实现队列
package test;public class Queue {private int maxSize;// 表示队列的大小private int[] queArr;// 用数组来存放队列的数据private int front;// 取数据的下标private int rear;// 存数据的下标private int nItems;// 记录存放数据的个数原创 2015-08-24 21:26:35 · 433 阅读 · 0 评论 -
Java实现数据结构中的栈
package test;public class Stack {private int maxSize;// 堆栈的大小private int[] stackArray;private int top;// 堆栈顶部指针public Stack(int s) {maxSize = s;stackArray = new int[maxSize];to原创 2015-08-25 15:33:12 · 421 阅读 · 0 评论 -
衡量算法的效率
(1)测量执行时间:Java中使用System.currentTimeMillis()获得毫秒数,在需要测试时间的代码前后获得开始和结束的时间,然后两者相减就是耗费的时间(毫秒);(2)指令计数:对一个算法的实现代码计算执行指令次数;(3)测量内存使用率:算法中包含的对象和引用数目,其越多则内存越高。原创 2015-08-25 15:44:24 · 543 阅读 · 0 评论 -
Java线性查找
从数组第一个元素开始查找,与查找值比较,如果相等,返回true,否则继续查找,直到找到匹配值。查找的数组中的值应是随机的、无序的。 static boolean linearSearch(int target,int[] array){ int len=array.length; for(int i=0;i if(array[i]==target) re原创 2015-08-25 16:11:10 · 476 阅读 · 0 评论 -
Java二分查找
二分查找的数组是有序排列的。查找时,会首先定位到数组的中间位置,将中间值和查找值比较,如果相等则返回,否则,如果当前元素值小于查找值,则继续在数组的后面一半查找,如果当前元素值大于查找值,则在数组的前面部分查找,直到找到目标值或者无法再二分数组时停止。 static boolean binarySerach(int target,int[] array){ int front=0;原创 2015-08-25 16:21:02 · 189 阅读 · 0 评论 -
fibonacci数列
斐波那契递归:1,1,2,3,5,8,13,21,34,......,用递归表示:fibonacci(1)=fibonacci(2)=1,fibonacci(n)=fibonacci(n-1)+fibonacci(n-2) (n>2)代码如下:static int fibonacci(int n){ if(n return 1; }el原创 2015-08-27 14:41:44 · 285 阅读 · 0 评论 -
Java排序算法
(1)选择排序:首先在数组中查找最小值,如果该值不在第一个位置,将其和处在第一个位置的元素交换,然后从第二个位置重复,将剩下元素中的最小值交换到第二个位置,当到最后一位时,数组排序结束。static void selectionSort(int[] array){ for(int i=0;i int min_Index=i; for(int j=i;原创 2015-08-25 16:33:02 · 255 阅读 · 0 评论 -
Java快速排序
static void quickSort(int[] array,int front,int tail){if(frontint pivotPosition=partition(array,front,tail);quickSort(array,front,pivotPosition-1);quickSort(array,pivotPosition+1,tail);}}原创 2015-08-27 18:54:55 · 238 阅读 · 0 评论 -
栈和队列的共同点和不同点
共同点:都是只允许在端点处插入和删除元素的数据结构;不同点:栈是仅在栈顶进行访问,遵循后进先出的原则(LIFO);队列是在队尾插入数据,在队头删除数据(FIFO)原创 2015-08-24 20:47:46 · 14699 阅读 · 0 评论