数组在内存中是连续分配的 创建时要指明数组的大小 数组名代表首地址,索引从0开始,到数组的长度-1数组一旦创建好,大小不可以改变 使用索引 获取索引位置的值 arr[index] 修改 arr[index] = val 删除 (假删除) 遍历,将数组中的元素,依次打印出来  package  Arrays ; import  java. util.  Random ; public  class  MyArr < T > { private  int  capacity =  0 ; private  int  size =  0 ; private  T [ ]  arr; public  MyArr ( int  capacity)  { if  ( capacity <  0 )  this . capacity =  10 ;  this . capacity =  capacity; this . arr =  ( T [ ] )  new  Object [ capacity] ; } public  int  getCapacity ( )  { return  capacity; } public  int  getSize ( )  { return  size; } public  T [ ]  setCapacity ( int  capacity)  { if  ( capacity <  0 )  { throw  new  RuntimeException ( "扩大小异常" ) ; } this . capacity =  capacity; T [ ]  newNum =  ( T [ ] )  new  Object [ capacity] ; for  ( int  i =  0 ;  i <  this . size;  ++ i)  { newNum[ i]  =  this . arr[ i] ; } return  newNum; } public  void  add ( T  val)  { if  ( this . size >=  this . capacity)  { this . arr =  setCapacity ( 2  *  this . capacity) ; } this . arr[ this . size++ ]  =  val; } public  boolean  removeByIndex ( int  index)  { if  ( index <  0  ||  index >  this . capacity)  { throw  new  RuntimeException ( "数组越界" ) ; } for  ( int  i =  index;  i <  size -  1 ;  ++ i)  { arr[ i]  =  arr[ i +  1 ] ; } size-- ; if  ( size <  this . capacity /  4  &&  this . capacity >  4 )  { arr =  setCapacity ( this . capacity /  4 ) ; } return  true ; } public  void  modify ( int  index,  T  val)  { if  ( index <  0  ||  index >  size -  1 )  { throw  new  RuntimeException ( "数组越界" ) ; } arr[ index]  =  val; } public  int  locateVal ( T  val)  { for  ( int  i =  0 ;  i <  size;  ++ i)  { if  ( arr[ i]  ==  val)  { return  i; } } return  - 1 ; } @Override public  String  toString ( )  { StringBuffer  stringBuffer =  new  StringBuffer ( ) ; stringBuffer. append ( '[' ) ; for  ( int  i =  0 ;  i <  this . size -  1 ;  ++ i)  { stringBuffer. append ( arr[ i]  +  "," ) ; } if ( size> 0 )  stringBuffer. append ( arr[ size -  1 ] ) ; stringBuffer. append ( ']' ) ; return  stringBuffer. toString ( ) ; } } class  Solution  { public  int  removeDuplicates ( int [ ]  nums)  { int  p= 0 ; int  q =  1 ; if ( nums== null || nums. length== 0 ) return  0 ; while ( q< nums. length) { if ( nums[ p] != nums[ q] ) { if ( q- p> 1 ) nums[ p+ 1 ] = nums[ q] ; p++ ; } q++ ; } return  p+ 1 ; } 
} 
 
 
class  Solution  { public  int [ ]  twoSum ( int [ ]  nums,  int  target)  { int [ ]  numsSum =  new  int [ 2 ] ; HashMap < Integer , Integer > =  new  HashMap < > ( ) ; for ( int  i= 0 ; i< nums. length; ++ i) { if ( hashMap. containsKey ( target -  nums[ i] ) ) { return  new  int [ ] { i,  hashMap. get ( target -  nums[ i] ) } ; } hashMap. put ( nums[ i] , i) ; } return  null ; }     } 
 
class  Solution : def  twoSum ( self,  nums:  List[ int ] ,  target:  int )  - >  List[ int ] : lens =  len ( nums) dic_num =  { } for  i in  range ( 0 , lens) : if ( target- nums[ i] )  in  dic_num: return  [ i, dic_num. get( target- nums[ i] ) ] dic_num[ nums[ i] ]  =  ireturn  [ ]