java算法01 - 链表】的更多相关文章

1.链表 在Java中实现链表,每个节点都有一个值,然后把它链接到下一个节点.下面来看一下节点的实现 class Node<E> { private E e; private Node<E> next = null; Node() { } Node(E e) { this.e = e; } public void setNext(Node<E> next) { this.next = next; } public Node<E> getNext() { re…
前言 从事编程已经有一段时间了,突然发现,Java作为我的第一编程语言,自己似乎对她并有一个系统的思想.当下Java依旧保持着超高的热度,新特性也不断出现,从当初学习的java6版本到最近刚出的java9,我意识到自己需要对整个java知识体系做一个梳理.借用一下<老子>里面的一句话:合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下.坚实的基础对于编程一样是重要.接下来,开始我们的积累之路吧! Java简介 什么是Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优…
编程面试的10大算法概念汇总   以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: 1. 字符串2. 链表3. 树4. 图5. 排序6. 递归 vs. 迭代7. 动态规划8. 位操作9. 概率问题10. 排列组合 1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法.         toCharArray() // 获得字…
Java 算法(一)贪心算法 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 一.贪心算法 什么是贪心算法?是指在对问题进行求解时,总是做出当前看来是最好的选择.也就是说,不从整体最优上加以考虑,所得出的结果仅仅是某种意义上的局部最优解. 因此贪心算法不会对所有问题都能得到整体最优解,但对于很多问题能产生整体最优解或整体最优解的近似解. 贪心算法的构成部分: 候选对象集合 :候选添加进解的对象的结合· 解对象集合 :初始时…
链表:一. 顺序存储结构虽然是一种很有用的存储结构,但是他有如下几点局限性:1. 因为创造线性表的时候已经固定了空间,所以当需要扩充空间时,就需要重新创建一个地址连续的更大的存储空间.并把原有的数据元素复制进新的存储空间.2. 因为顺序表要求数据的存储位置不仅是逻辑上相邻而且物理存储上也要相邻,所以当对数据进行增删操作的时候则会引起平均一半的数据元素移动.综上所述:适合静态存储.对数据元素很少增删操作,则优先选择顺序表,对需要对数据频繁执行插入和删除操作,则选择动态的线性表-链表,链式存储不需要…
数据结构必要知识 线性结构 线性结构是最常用的数据结构,数据元素之间存在一对一的线性关系. 线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的. 链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素以及相邻的地址信息. 线性表结构常见的有:数组,队列,链表,栈 非线性结构 非线性结构包括:二维数组,多维数组,广义表,树结构,图结构(这就不是一对一了) 稀疏数组 基本介绍 定义: 当一个数组中大部分的元素为…
(Java 算法的 ACM 模式) 前言 经常在 LeetCode 上用核心代码模式刷题的小伙伴突然用 ACM 模式可能会适应不过来,把时间花在输入输出上很浪费时间,因此本篇笔记对 Java 算法的 ACM 模式做了个小总结: 除此之外,需要注意一些小细节: 1. 数字读取到字符串读取间需要用 in…
Java实现单链表的各种操作 主要内容:1.单链表的基本操作 2.删除重复数据 3.找到倒数第k个元素   4.实现链表的反转   5.从尾到头输出链表 6.找到中间节点 7.检测链表是否有环 8.在不知道头指针的情况下删除指定节点 9.如何判断两个链表是否相交并找出相交节点 直接上代码,就是这么奔放~~~ package pers.ty.$1101datastructure; import java.util.Hashtable; /** * @author Administrator * 实…
java算法系列之排序 手写冒泡 冒泡算是最基础的一个排序算法,简单的可以理解为,每一趟都拿i与i+1进行比较,两个for循环,时间复杂度为 O(n^2),同时本例与选择排序进行了比较,选择排序又叫直接排序,之所以直接,就是简单粗暴,不像冒泡,冒泡是紧挨着的两个小伙伴两两比较,直接排序是每一趟直接拿当前i与整个数组中所有元素进行比较,如果大小不一致,直接替换,相当于跳跃过去了,根本不考虑小伙伴的感受,我看到哪个小伙伴比我小,我就占领它的位置,彼此替换. package com.rsc.sort;…
java算法系列之排序 手写快排 首先说一下什么是快排,比冒泡效率要高,快排的基本思路是首先找到一个基准元素,比如数组中最左边的那个位置,作为基准元素key,之后在最左边和最右边设立两个哨兵,i 和 j 之后,开始按住左哨兵(i),让右哨兵(j)往左走(j--),找到比key小的元素后,按住右哨兵(j),开始让左哨兵往右走(i++),直到找到比key大的元素,让i和j脚下的值互换,此时完成第一趟快排,之后开始按照这个思路进行while循环,跳出循环的条件很简单,就是当两个哨兵碰头了,就跳出循环,…
Java学习01 第一章 1.JRE与JDK JDK(JAVA Develop Kit,JAVA开发工具包)提供了Java的开发环境和运行环境,主要用于开发JAVA程序,面向Java程序的开发者; Java开发工具包 JDK = JRE + 工具(编译器.调试器.其他工具……) + 类库 JRE(JAVA Runtime Environment,JAVA运行环境)提供了Java的运行环境,主要用于执行JAVA程序,面向Java程序的使用者.Java运行时环境 JRE = JVM(Java Vir…
问题描述 编制一个乘法运算的程序. 从键盘读入2个100以内的正整数,进行乘法运算并以竖式输出. 输入格式 输入只有一行,是两个用空格隔开的数字,均在1~99之间(含1和99). 输出格式 输出为4行或7行,符合乘法的竖式运算格式. 样例输入 89 13 样例输出 输入输出样例1解释 3×89=267,则第四行267右侧对准个位输出.1×89=89,则第五行89右侧对准十位输出.267+890=1157,则1157右侧对准个位输出. 样例输入 16 8 样例输出 输入输出样例2解释 8×16=1…
一共有5个红领巾,编号分别为A.B.C.D.E,老奶奶被他们其中一个扶过了马路. 五个红领巾各自说话: A :我和E都没有扶老奶奶 B :老奶奶是被C和E其中一个扶过大街的 C :老奶奶是被我和D其中一个扶过大街的 D :B和C都没有扶老奶奶过街 E :我没有扶老奶奶 已知五个红领巾中有且只有2个人说的是真话,请问是谁扶这老奶奶过了街? 若有多个答案,在一行中输出,编号之间用空格隔开. 例如 A B C D E(这显然不是正确答案) package 蓝桥杯java算法训练; public cla…
问题描述 在C/C++语言中,整型所能表示的范围一般为-231到231(大约21亿),即使long long型,一般也只能表示到-263到263.要想计算更加规模的数,就要用软件来扩展了,比如用数组或字符串来模拟更多规模的数及共运算. 现在输入两个整数,请输出它们的和. 输入格式 两行,每行一个整数,每个整数不超过1000位 输出格式 一行,两个整数的和. 样例输入 样例输出 数据规模和约定 每个整数不超过1000位     代码:: package 蓝桥杯java算法训练; import ja…
问题描述 输入三个自然数N,i,j (1<=i<=N,1<=j<=N),输出在一个N*N格的棋盘中,与格子(i,j)同行.同列.同一对角线的所有格子的位置. 输入格式 输入共三行,分别输入自然数N,i,j.其中保证N<=24且1<=i<=N,1<=j<=N. 输出格式 输出共四行.第一行为与格子(i,j)同行的所有格子的位置,第二行为与格子(i,j)同列的所有格子的位置,第三行为从左上到右下对角线上的格子的位置,第四行为从左下到右上对角线上的格子的位置…
JAVA 实现单链表的增删功能 package linked; class LinkedTable{ } public class LinkedTableTest { public static void main(String[] args) { //构造单链表 Node node1=new Node("name1"); Node node2=new Node("name2"); Node node3=new Node("name3"); No…
JAVA数据结构之链表 什么是链表呢? 链表作为最基本的数据结构之一,定义如下: 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的. 简单来说呢,链表就是由一系列节点组成的,每个节点都包括两个部分,一个是该节点的值,另一个就是对于下一个节点的引用. 链表的结构表示图 链表的实现 public class ListNode { //链表节点存放的数据 int val; //链表的无参构造方法 public ListNode(){ } //指向下一…
package log; public class Test4 { /** * java算法---希尔排序(最小增量排序) * * @param args */ public static void main(String[] args) { // 需要排序的数组 int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 }; double d1 = arr.length; int temp = 0; // 循环输出该数组内容 System.out.pri…
package log; import java.util.Arrays; public class Test4 { /** * java算法---归并排序 * * @param args */ public static void main(String[] args) { // 需要排序的数组 int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 }; // 循环输出该数组内容 System.out.println("排序之前:"); f…
package log; public class Test4 { /** * java算法---快速排序 * * @param args */ public static void main(String[] args) { // 需要排序的数组 int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 }; // 循环输出该数组内容 System.out.println("排序之前:"); for (int a : arr) { System…
package log; public class Test4 { /** * java算法---冒泡排序 * * @param args */ public static void main(String[] args) { // 需要排序的数组 int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 }; // 循环输出该数组内容 System.out.println("排序之前:"); for (int a : arr) { System…
package log; public class Test4 { /** * java算法---选择排序 * * @param args */ public static void main(String[] args) { // 需要排序的数组 int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 }; // 循环输出该数组内容 System.out.println("排序之前:"); for (int a : arr) { System…
package log; public class Test4 { /** * java算法---插入排序 * * @param args */ public static void main(String[] args) { // 需要排序的数组 int arr[] = { 49, 20, 36, 51, 18, 94, 61, 31, 50 }; // 循环输出该数组内容 System.out.println("排序之前:"); for (int a : arr) { System…
java基础01 1. /** * JDK: (Java Development ToolKit) java开发工具包.JDK是整个java的核心! * 包括了java运行环境 JRE(Java Runtime Envirnment),一堆java工具和 * java基础的类库(Java API===>java应用程序接口,其实就是大牛给我们写好的一些class文件)! * * J2SE :标准版(standard edition) * * J2EE :企业版(enterprise editio…
问题描述 有一位使者要游历各国,他每到一个国家,都能学到一种文化,但他不愿意学习任何一种文化超过一次(即如果他学习了某种文化,则他就不能到达其他有这种文化的国家).不同的国家可能有相同的文化.不同文化的国家对其他文化的看法不同,有些文化会排斥外来文化(即如果他学习了某种文化,则他不能到达排斥这种文化的其他国家). 现给定各个国家间的地理关系,各个国家的文化,每种文化对其他文化的看法,以及这位使者游历的起点和终点(在起点和终点也会学习当地的文化),国家间的道路距离,试求从起点到终点最少需走多少路.…
问题描述 小明的花店新开张,为了吸引顾客,他想在花店的门口摆上一排花,共m盆.通过调查顾客的喜好,小明列出了顾客最喜欢的n种花,从1到n标号.为了在门口展出更多种花,规定第i种花不能超过ai盆,摆花时同一种花放在一起,且不同种类的花需按标号的从小到大的顺序依次摆列. 试编程计算,一共有多少种不同的摆花方案. 输入格式 第一行包含两个正整数n和m,中间用一个空格隔开. 第二行有n个整数,每两个整数之间用一个空格隔开,依次表示a1.a2.……an. 输出格式 输出只有一行,一个整数,表示有多少种方案…
问题描述 小弱T在闲暇的时候会和室友打扑克,输的人就要负责洗牌.虽然小弱T不怎么会洗牌,但是他却总是输. 渐渐地小弱T发现了一个规律:只要自己洗牌,自己就一定会输.所以小弱T认为自己洗牌不够均匀,就独创了一种小弱洗牌法. 小弱洗牌法是这样做的:先用传统洗牌法将52张扑克牌(1到K各四张,除去大小王)打乱,放成一堆,然后每次从牌堆顶层拿一张牌.如果这张牌的大小是P(1到K的大小分别为1到13),那么就把这张牌插入到当前手中第P张牌的后面.如果当前手中不足P张牌,那么就把这张牌放在最后. 现在给你一…
package wulj; /** * Java算法之“兔子问题”: * 有一只兔子,从出生后第3个月起每个月都生只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少? * @Description * @author wulj * @date 2018年6月1日 */ public class WljTest { /** * 转化为数学问题如下: * 1.假设第一个月的兔子数为:a,第二个月的兔子数为:b * 2.假设第一个月的新兔子数为 :new,老兔子数…
原文地址: 图解堆算法.链表.栈与队列(多图预警) 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间较短的任务却可能需要等待很长时间才能开始执行,或者某些不短小.但很重要的作业,同样应当拥有优先权.而堆就是为了解决此类问题而设计的数据结构.………
public class String_intern { public static void main(String[] args) { String old="aaaaabc1"; String ne="aabc1"; String oak; for (int i = 0; i <ne.length() ; i++) { //z 只能取到 ne.length() 通过subString可以取到最后 ne.length() -1 for (int j = 0…