下标越界

Java 3:顺序表的操作

匿名 (未验证) 提交于 2019-12-02 21:40:30
顺序表常见操作有插入、删除、查找、修改。 一、插入: 1.插入有头插、尾插、任意位置插入。在插入时要注意下标的取值在顺序表长度范围内。所以最好在插入之前进行扩容操作。 2.在头插时要注意先将原数组的元素从后往前依次向后移动。因为如果从前往后开始移动的话,会造成后一个元素被前一个元素覆盖,而丢失数据且造成重复。arr[i+1]=arr[i],注意此处i的意思是要移动的元素的下标。 3.任意位置插入与头插类似,从后往前(要插入的位置元素下标)依次向后移动,再将数据插入 二.删除 1.删除有头删、尾删、任意位置删除,要注意删除前,原顺序表是否为空的异常情况。 2.头删与头插相反,是从前往后依次向前移动,即后一个元素arr[i+1]覆盖前一个元素arr[i].arr[i]=arr[i+1] 3.不论查找还是删除,在确定循环语句的初始值和条件时都要仔细思考可取范围 三.查找和修改 查找和修改要注意目标位置的下标不能越界 四.扩容 在java语言中,扩容一般扩为原来的1.5倍,是一种习惯的规范,不是死规则。 最后,附上完整代码,包括初始化、插入、删除、查找、修改、扩容、删除顺序表的相同元素。 import java.util.Arrays; public class SeqList1{ private int[] array; private int size; //1.初始化,构造函数

hdu3068-最长回文-马拉车(Manacher)算法

烂漫一生 提交于 2019-12-02 18:48:11
http://acm.hdu.edu.cn/showproblem.php?pid=3068 脑子转个弯总算看懂马拉车算法了。记录一下思路和模板。 马拉车算法是在O(n)的时间内求出最大回文子串。 一、变量和定义 为了对奇偶回文串统一处理,每个字符之间都加上一个字符,加上一个不会出现在原字符串的, 如"abba"变成"#a#b#b#a#";"aba"变成"#a#b#a#";无论是奇偶原串都变成了奇数新串,接下来对新串处理。 在一次遍历字符的过程中,变量名及意义 i:表示当前遍历到哪一个下标的字符 p[idx]:表示下表为idx的字符的回文半径,包括自身 id:目前遍历过程中能延展到最右的回文的中心点 mx:目前遍历过程中能延展到最右的下标位置,姑且称之为探测的最远长度 j:以id为中心的关于i对称的字符,在id的左边,已经遍历过了,p[j]已经确定了的 二、为何要记录每个遍历字符的回文半径呢?利用已有的信息为后面的遍历铺垫,否则就和中心扩展一样是O(n 2 )复杂度 1."abcecbd"加上'#'后变成"#a#b#c#e#c#b#d#" 下标 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 内容 # a # b # c # e # c # b # d # p[i] 1 2 1 2 1 2 1 6 1 2 1 2 1 2 1 最长回文子串"#b#c#e#c#b

JSONObject

寵の児 提交于 2019-12-02 14:27:50
package com.ruoyi.common.json; import java.util.ArrayList; import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.StringTokenizer; import java.util.regex.Matcher; import java.util.regex.Pattern; import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.utils.StringUtils; /** * 通用消息对象,基于Map实现的可嵌套数据结构。 支持JSON数据结构。 * * @author ruoyi */ public class JSONObject extends LinkedHashMap<String, Object> { private static final long serialVersionUID = 1L; private static final Pattern arrayNamePattern = Pattern.compile("(

java之Collection

情到浓时终转凉″ 提交于 2019-12-01 18:54:08
Collection 1.List ArrayList源码分析 package java.util; import java.util.function.Consumer; import java.util.function.Predicate; import java.util.function.UnaryOperator; import sun.misc.SharedSecrets; public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { private static final long serialVersionUID = 8683452581122892189L; /** * 默认初始化容量 */ private static final int DEFAULT_CAPACITY = 10; /** * 空数组 */ private static final Object[] EMPTY_ELEMENTDATA = {}; /** * 空数组 */ private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; /**

Netty学习(四)FastThreadLocal

隐身守侯 提交于 2019-11-30 05:57:40
FastThreadLocal 前面介绍过 JDK 的 ThreadLocal , 使用不当的话容易造成内存泄漏最终导致OOM, 并且也有一些地方设计的不够好(相对于接下来要介绍的 FastThreadLocal), 接下来我们就介绍一下 Netty 改进的 FastThreadLocal, 看它到底 Fast 在哪里. (JDK 的 ThreadLocal 的地址: https://www.cnblogs.com/wuhaonan/p/11427119.html ) 同样的, 这回我们根据 FastThreadLocal 的源码对其进行分析. FastThreadLocal#构造方法 FastThreadLocal 有一个标记自己下标的 index , 表明当前 FastThreadLocal 在 InternalThreadLocalMap 存储数据的数组中(Object[] indexedVariables)所处的下标. // 位于 map 中的下标 private final int index; public FastThreadLocal() { index = InternalThreadLocalMap.nextVariableIndex(); } 跟踪 InternalThreadLocalMap.nextVariableIndex(); 的实现可以看到:

三大容器的知识

烈酒焚心 提交于 2019-11-29 15:17:24
在之前学习的内容中: 变量 = 值 ,编程会变的特别复杂。一般编程语言都会设置储存多个值的储存方式,在python中,我们把它称为容器      list     列表(类似于一种对应:链表的实现) 是一种列表,或者数组的实现 [ ] 列表的定义: 弱数据类型靠值定义 第二种定义方法:[ ]有没有值都行,可以为空 我们可以通过访问列表中的元素:使用下标(下标重0开始0,1,2,3) 注意:在我定义的a中没有a[4],如果输入a[4]会报错,提示“下标越界” 如何知道a中一共有多少数据,我们可以使用len函数 len函数:返回容器的个数 可以求出容器的长度 遍历:一个一个的过一遍 列表可以存储任意形式,使用for循环挨个列出列表中的值 元素:在列表中,我们可以使用下标访问元素 append:表示在列表末尾添加新的元素 insert :表示在特定的位置添加新的元素 clean:将容器清空 remore:通过元素本身将元素移除 index:查找元素在列表中的位置,如果元素不存在,则抛出异常 reverse:反转列表 sort:将列表排序 copy:复制对象 extend:合并列表      set 集合 无序且不能重复(没有下标) add:添加元素 remove:移除指定的元素 interstation:交集 difference:差集 union:并集     tuple 元组    

py-数据类型

你。 提交于 2019-11-28 19:21:01
一:编码: (1)最早数据编码是以ascii码表示,ascii只能表示英文、特殊字符、数字,且不能包含所有语言文字,所以创办了万国码unicode,万国码由于占用资源较多,后面升级为utf-8 utf-16 utf-32 8位 =1个字节bytes、欧洲16位:2个字节、中文24位表示:3个字节 二:数据类型 1.int,python为int提供了一种方法:bit_length() 帮助我们计算int在内存中占用的二进制长度 例: num=10 print(num.bit_length(num)) #运行结果:4 2.bool,布尔值就两种:True、False,反应正确与否 1 真 Ture 0 假 False 3.str,python中凡是用引号引起来的数据都被称为字符串类型 4.int、bool、str三者数 据类型之间的转换    # int ---> bool i = 100 print(bool(i)) # True # 非零即True i1 = 0 print(bool(i1)) # False 零即False # bool ---> int t = True print(int(t)) # 1 True --> 1 t = False print(int(t)) # 0 False --> 0 # int ---> str i1 = 100 print(str(i1

C语言程序设计(八)

安稳与你 提交于 2019-11-27 18:40:28
第八章 数组 //L8-1 #include <stdio.h> int main() { int score1, score2, score3, score4, score5; int totalScore; printf("Input the scores of ten students:\n"); scanf("%d", &score1); scanf("%d", &score2); scanf("%d", &score3); scanf("%d", &score4); scanf("%d", &score5); totalScore = score1 + score2 + score3 +score4 + score5; printf("The average score is %f\n", totalScore/5.0); return 0; } //运行结果 Input the scores of ten students: 90 95 91 86 79 The average score is 88.200000 数组:解决需要对相同类型的批量数据进行处理的问题 数组是一组具有相同类型的变量的集合 数组名 数组元素:构成数组的每个数据项 数组的下标 数组的基类型:即数组中元素的类型 数组的维数:下标的个数 C语言中数组的下标都是 从0开始 的 //L8-1

JVM基本指令及其说明

时光毁灭记忆、已成空白 提交于 2019-11-27 16:21:05
本文分为3个部分, 第一个部分列出常用的jvm指令 ,每一个指令基本都有几个类似的指令,看名字就知道了,比如像iconst、lconst、fconst、dconst这些主要是针对不同的类型(int、long、float、double),将对应类型的值push到栈顶,其他指令类似,所以基本指令就给出一个例子,其他的联想一个就好, 第二部分,给出一小段代码, 并给出指令集并详细给出每一行代码的解释。 第三部给出jvm全部的指令集, 方便查询 jvm 基本指令 iconst_1 int型常量值1进栈 bipush 将一个byte型常量值推送至栈顶 iload_1 第二个int型局部变量进栈 ,从 0 开始计数 istore_1 将栈顶int型数值存入第二个局部变量,从 0 开始计数 iadd 栈顶两int型数值相加,并且结果进栈 return 当前方法返回void getstatic 获取指定类的静态域,并将其值压入栈顶 putstatic 为指定的类的静态域赋值 invokevirtual 调用实例方法 invokespecial 调用超类构造方法、实例初始化方法、私有方法 invokestatic 调用静态方法 invokeinterface 调用接口方法 new 创建一个对象,并且其引用进栈 newarray 创建一个基本类型数组,并且其引用进栈 二、具体分析

【学习笔记】Python编程,腾讯课堂/51测试网/W3Cschool视频学习网站,笔记整理

落爺英雄遲暮 提交于 2019-11-27 15:41:52
【公共信息】 python中文接口文档官网: https://learnku.com/python/docs 逻辑判断优先级官方地址: https://docs.python.org/3/reference/expressions.html 【第一课:python基础,20190626】 1.python基础介绍。 1.1如果把电脑比作人,大脑就好比机器的CPU+内存 1.2python官方解释器,是用C语言编写实现的。(简称Cpython) 1.3如果想通过cmd直接运行文件,可以在path里面加上python\bin路径。 1.4 2.python和其他语言对比。 2.1编译执行:C/C++/JAVA(javac编译器) ①编译+链接:表示把源代码编程成机器代码文件,然后把多个机器代码文件合并为一个可 执行文件,需要人工点击run才能执行文件。 ②特点:一旦某一条语法错误,整个程序不能运行--(类似笔译,必须完全正确才可运行) ③生成:exe--可执行文件 2.2解释执行:Python(python解释器) ①解释器:把python源代码转换为bytecode机器码,直接执行bytecode,不需要生成可执行 文件。 ②特点:边执行边翻译。--(类似口译,部分正确也可以执行部分内容) ③不生成:exe--可执行文件 ④不申明:变量使用之前不需要声明,赋什么值就是什么类型 比如