数据结构
文章平均质量分 60
Memorial*
我只想静静的写程序
展开
-
每日一题1.--------LeetCode35 - 搜索插入位置
package com.LeetCode;/** * 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 * <p> * 你可以假设数组中无重复元素。 */public class SearchInsert { public static void main(String[] args) {...原创 2020-04-12 10:40:19 · 98 阅读 · 0 评论 -
LeetCode7.整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例 1:输入: 123输出: 321 示例 2:输入: -123输出: -321示例 3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。 ...原创 2019-01-15 17:10:10 · 312 阅读 · 0 评论 -
Java回调机制
模板间调用在一个应用系统中,无论使用何种语言开发,必然存在模板之间的调用,调用的方式分为几种:(1)同步调用同步调用是最基本并且最简单的一种调用方式,类A的方法a()调用类B的方法b(),一直等待b()方法执行完毕,a()方法继续往下走。这种调用方式适用于方法b()执行时间不长的情况,因为b()方法执行时间一长或者直接阻塞的话,a()方法的余下代码是无法执行下去的,这样会造成整个流...原创 2019-01-21 19:47:16 · 196 阅读 · 0 评论 -
Java内部类
一般情况下,我们把类定义成独立的单元。有些情况下,我们把一个类放在另一个类的内部定义,称为内部类(innerclasses)内部类可以使用public、default、protected、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰。注意 内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类。对于...原创 2019-02-02 11:22:55 · 173 阅读 · 1 评论 -
P、NP、NPC、和NP-Hard相关概念
一、相关概念 P: 能在多项式时间内解决的问题NP: 不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题NPC: NP完全问题,所有NP问题在多项式时间内都能约化(Reducibility)到它的NP问题,即解决了此NPC问题,所有NP问题也都得到解决。NP hard:NP难问题,所有NP问题在多项式时间内都能约化(Reducibility)到...原创 2019-02-22 12:27:01 · 360 阅读 · 0 评论 -
String 类中equals方法和“==”的区别
package cn.bjsxt.string;public class TestString {public static void main(String[] args) { String str=new String("abcd"); String str2=new String("abcd"); System.out.println(str.charAt(2)); Syst...原创 2019-02-27 15:47:56 · 314 阅读 · 0 评论 -
LeetCode 14——最长公共前缀
题目描述:编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。说明:原创 2019-03-16 22:10:10 · 118 阅读 · 0 评论 -
Leetcode9——Java判断回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例 1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入: 10输出: false解释: 从右向左读, 为 01 。因此它不是一...原创 2019-03-13 16:02:07 · 346 阅读 · 0 评论 -
数据库索引原理
创建表的时候都会为表加上主键, 在某些关系数据库中, 如果建表时不指定主键,数据库会拒绝建表的语句执行。 事实上, 一个加了主键的表,并不能被称之为「表」。一个没加主键的表,它的数据无序的放置在磁盘存储器上,一行一行的排列的很整齐, 跟我认知中的「表」很接近。如果给表上了主键,那么表在磁盘上的存储结构就由整齐排列的结构转变成了树状结构,也就是上面说的「平衡树」结构,换句话说,就是整个表就变成了一个...转载 2019-03-26 16:46:51 · 156 阅读 · 0 评论 -
Java实现创建简单的链表操作
1、创建Node节点类//构建节点类public class Node { int data; int np; String names; Node next; //节点声明的构造函数 public Node(int data, int np, String names) { this.data = data; this.np = np; this.names = ...原创 2019-03-27 10:49:10 · 6459 阅读 · 0 评论 -
LeetCode20——有效的括号(栈应用)
给定一个只包括'(',')','{','}','[',']'的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例 1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false...原创 2019-03-31 17:55:46 · 167 阅读 · 0 评论 -
Java链表删除节点操作
1、创建节点类Node/** * 程序目的:建立一组学生成绩的单向链表程序,包含学号、姓名、和成绩3种数据。 只要输入要删除学生的成绩,就可以遍历该链表,并清除学生的节点, * 要结束输入时,输入“-1”,则此时会列出该链表未删除的所有学生数据。 * * @author 86176 * *///构建节点类public class Node { int data; int...原创 2019-03-27 16:07:30 · 11425 阅读 · 1 评论 -
数据结构——栈(Java)
堆栈的数组实现:/** * 程序名称:CH04_01 * 程序目的:用数组模拟堆栈 * @author 86176 * */import java.io.*;import java.util.*;class StackByArray {// 以数组模拟堆栈的类声明 private int[] stack;// 在类中声明数组 private int top;// 指向堆...原创 2019-04-01 10:47:33 · 97 阅读 · 0 评论 -
Java单向链表反转
1、创建节点类Node//构建节点类public class Node { int data; int np; String names; Node next; // 节点声明的构造函数 public Node(int data, int np, String names) { this.data = data; this.np = np; this.names ...原创 2019-03-28 15:38:03 · 162 阅读 · 0 评论 -
堆栈的应用
堆栈在计算机领域的应用主要是限制数据插入与删除的位置和方法,属于有序表的应用。1、二叉树及森林的遍历,如中序遍历、前序遍历等2、计算机中央处理单元中的中断处理。3、图形的深度优先遍历法。4、某些堆栈计算机,采用零地址指令,其指令没有操作数字段,大部分通过弹出和堆入两个指令来处理。5、递归程序的调用及返回。在每次递归之前,必须先将下一个指令的地址及变量的值保存到堆栈中。当以后递归...原创 2019-05-09 15:19:29 · 3544 阅读 · 0 评论 -
队列——数组实现
package Queue;/** * 程序名称:CH05_01 * 程序目的:实现队列数据的存入和取出 * @author 86176 * */import java.io.*;public class CH05_01 {//需要使用front和rear两个指针分别指向前端和尾端//声明队列queue[20],且一开始front和rear均预设为-1(因为java语言数组的...原创 2019-05-09 15:54:40 · 599 阅读 · 0 评论 -
堆栈链表实现——java
package Stack;/** * 程序名称:CH04_03 * 程序目的:链表制作堆栈 * @author 86176 * */import java.io.*;//链接节点的声明class Node{ int data; Node next; public Node(int data) { this.data=data; this.next=null; ...原创 2019-05-07 11:02:17 · 366 阅读 · 0 评论 -
python数据结构之排序、查找算法
1.排序算法"""排序 - 冒泡排序、选择排序、归并排序、快速排序冒泡排序 - O(n ** 2):两两比较,大的下沉35, 97, 12, 68, 55, 73, 81, 4035, 12, 68, 55, 73, 81, 40, [97]12, 35, 55, 68, 73, 40, [81]12, 35, 55, 68, 40, [73]...选择排序 - O(n **...原创 2019-08-20 22:13:06 · 378 阅读 · 0 评论 -
Java抽象类
为什么需要抽象类?如何定义抽象类?是一种模板模式。抽象类为所有子类提供了一个通用的模板,子类可以在这个模板基础上进行扩展。通过抽象类,可以避免子类设计的随意性。通过抽象类我们可以做到严格限制子类的设计,使子类之间更加通用。要点有抽象方法的类只能定义能抽象类抽象类不能实例化,及不能用过new来实例化抽象类。public class Test {public static ...原创 2019-01-15 16:41:42 · 101 阅读 · 0 评论 -
Java多态
多态指的是同一个方法调用,由于对象不同可能会有不同的行为。现实生活中,同一个方法,具体的实现会不同。多态的要点:1.多态是方法的多态,不是属性的多态(多态与属性无关)。2.多态的存在要有3个必要条件:继承,方法重写,父类引用指向子类对象。3.父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。package aaa.cshd;/** * 测试多态...原创 2019-01-14 12:07:14 · 67 阅读 · 0 评论 -
LeetCode43------两数相乘
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。示例 1:输入: num1 = "2", num2 = "3"输出: "6"示例 2:输入: num1 = "123", num2 = "456"输出: "56088"说明:num1 和 num2 的长度小于110。 num1 和原创 2019-01-08 16:53:44 · 670 阅读 · 0 评论 -
数据结构之算法复杂度(Python)
算法:解决特定问题的步骤的描述 特性: —输入:有零个输入或者多个输 —输出:只有一个或者多个输出 —有穷型性:算法在执行有限个步骤时,会自动结束而不会陷入无限循环里面 —确定性:算法的每一步都有确定的含义而不会出现二义性 —可行性:算法的每一步都可以通过有限次数完成。https://blog.csdn.net/cats_miao/article/details/80879692?ut...原创 2018-12-08 21:50:00 · 542 阅读 · 0 评论 -
python创建函数以及参数的使用(一)
创建函数:函数是可以调用的(可能带有参数,也就是放在圆括号中的值),它执行某种行为并且返回一个值。一般来说,内置的callable函数可以用来判断函数是否可以调用:import mathx=1y=math.sqrt #sqrt返回数字的平方根print(callable(x))print(callable(y))输出:import mathx=1y=math....原创 2018-12-12 22:17:31 · 2609 阅读 · 0 评论 -
Python函数之递归(用递归实现二分查找)
递归:简单来说就是引用(或者调用)自身的意思。#阶乘def factorical(n): result=n for i in range(1,n): result *=i return resultprint(factorical(12))输出:479001600代码实现二分查找法:#实现二分查找法def search(sequ...原创 2018-12-13 21:32:26 · 2533 阅读 · 0 评论 -
Python面向对象技术
对象(object):基本上可以看做数据(特性)以及由一系列可以存取、操作这些数据的方法所组成的集合。使用对象替代全局变量和函数的原因有很多种,其中对象最重要的优点包括以下几点:多态(Polymorphism):意味着就算不知道变量所引用的对象类型是什么,还是能对它进行操作,而它也会根据对象(或类)类型的不同而表现出不同的行为。封装(Encapsulation):指向程序中的其他部...原创 2018-12-14 16:25:08 · 208 阅读 · 0 评论 -
python数据结构之线性表
线性表:是N个类型相同数据元素的有限序列,N>0,除第一个元素没有前驱,最后一个元素没有后继之外,其余元素都只有一个前驱和一个后继。记作(a1,a2,...an)如图1,数据元素之间是一对一关系。 图1:线...原创 2018-12-09 17:05:45 · 1027 阅读 · 0 评论 -
python数据结构之深浅拷贝
Python中深浅拷贝详解变量-引用-对象(可变对象,不可变对象)-切片-拷贝(浅拷贝,深拷贝)变量:在Python中一切都是对象,比如:3,3.14,“Hello world”,【1,2,3,4】,{‘a’:1}….输出:甚至连Type其本身也是对象,type对象Python中的变量指对象的引用,Python是动态类型,程序运行时会根据对象的类型来确认变量到底是什么类...原创 2018-12-09 22:30:22 · 370 阅读 · 0 评论 -
python数据结构之序列及其操作
序列 在Python中最基本的数据结构是序列(sequence)。序列中的每个元素被分配一个序号----即元素的位置,也称索引。索引从0开始,0,1,2,3,...。也可以从最后一个数开始,标记为-1,依次为-1,-2,-3....列表与元组的区别:列表可以修改,元组不可修改。通用序列操作1.索引索引示例:#根据给定的年月日以数字形式打印出日期months=[...原创 2018-12-10 13:10:59 · 255 阅读 · 0 评论 -
内存分析:栈、堆、方法区
Java虚拟机的内存可以分为三个区域:栈stack、堆heap、方法区method area。栈的特点如下: 1. 栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等) 2. JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量等) 3. 栈属于线程私有,不能实现线程间的共享! 4. 栈的存储特性是“...原创 2018-12-21 21:26:33 · 395 阅读 · 0 评论 -
构造方法及重载
构造器也叫构造方法(constructor),用于对象的初始化。构造器是一个创建对象时被自动调用的特殊方法,目的是对象的初始化。构造器的名称应与类的名称一致。Java通过new关键字来调用构造器,从而返回该类的实例,是一种特殊的方法。声明格式: 1 2 3 [修饰符] 类名(形参列表){ //n条语句 } 要...原创 2018-12-21 21:54:13 · 7857 阅读 · 1 评论 -
python数据结构之字符串方法
1.capitalize():将字符串中首字母转换成大写,其余字符转换成小写Str="this is string example from runoob ...wow!!!"print("Str.capitalize():",Str.capitalize())#该方法返回一个首字母大写的字符串str="123 hello PYTHON"print("str.capitalize...原创 2018-12-11 15:15:10 · 345 阅读 · 0 评论 -
python数据结构之字典
列表这种数据结构适合于将值组织到一个结构中,并且通过编号对其进行引用。 在本文中,将学习一种通过名字来引用值的数据结构,这种类型的数据结构称为映射(mapping)。字典是Python中唯一内建的映射类型。字典中的值并没有特殊的顺序,但是都是存储在一个特定的键(Key)下。键可以是数字、字符串甚至是元组。构造字典的目的:可以通过轻松查找某个特定的词语(键),从而找...原创 2018-12-11 21:20:55 · 220 阅读 · 0 评论 -
python数据结构之字典方法
字典是一种通过名字或者关键字引用的得数据结构,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型,基本的操作包括如下: (1)len():返回字典中键—值对的数量; (2)d[k]:返回关键字对于的值; (3)d[k]=v:将值关联到键值k上; (4)del d[k]:删除键值为k的项; (5)key in d:键值key是否在d中,是返回...转载 2018-12-12 11:14:34 · 368 阅读 · 0 评论 -
Leetcode1.两数之和(java)------------数组
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]clas...原创 2018-12-29 14:13:35 · 495 阅读 · 0 评论 -
Static 关键字
static关键字:在类中,用static声明的成员变量为静态成员变量,也称为类变量。 类变量的生命周期和类相同,在整个应用程序执行期间都有效。它有如下特点: 1. 为该类的公用变量,属于类,被该类的所有实例共享,在类被载入时被显式初始化。 2. 对于该类的所有对象来说,static成员变量只有一份。被该类的所有对象共享!! 3. 一般用“类名.类属性/方法”来调用。(...原创 2018-12-24 19:35:52 · 92 阅读 · 0 评论 -
Java数据结构之数组(一)
Java中提供的数组是用来存储固定大小的同类型元素。声明数组变量:dataType[] arrayRefVar; // 首选的方法 或 dataType arrayRefVar[]; // 效果相同,但不是首选方法创建数组:Java语言使用new操作符来创建数组,语法:arrayRefVar = new dataType[arraySize];1.使用da...原创 2018-12-30 13:21:05 · 376 阅读 · 0 评论 -
Java数据结构之冒泡排序
冒泡排序:/** * N個數字要完成排序,總共進行N-1趟排序,每i趟排序次數為(N-1)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。 * * @author Memorial * */public class BubbleSort { public static void main(String[] args) { int a[] = {...原创 2018-12-30 15:18:41 · 147 阅读 · 0 评论 -
Leetcode2.两数相加-----------链表
给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。伪代码如下:将当前结点初始化为返回列表的哑结点。 将进位 carrycarry 初始化为 00。 将 pp 和 qq 分别...原创 2019-01-07 15:16:38 · 195 阅读 · 0 评论 -
数据结构之数据类型和面向对象技术
一、数据类型:1.基本数据类型(物理数据类型)一般分为整数、实数、字符等。c语言的基本数据类型:整数(int)字符(char)单精度浮点数(float)双精度浮点数(double)2.结构数据类型(虚拟数据类型)指一个数据结构包含其他的数据类型,如字符串(string)、集合(set)、数组(Array),比基础数据类型更高级。3.抽象数据类型(Abstract Dat...原创 2018-12-08 13:29:33 · 325 阅读 · 0 评论